Clojure 웹 프레임 워크 비교
Clojure를위한 몇 가지 웹 프레임 워크가 있습니다.
또한 다음과 같은 특정 웹 개발 하위 작업을 처리하기위한 일부 라이브러리
또한 수백 개의 Java 라이브러리를 사용할 수 있습니다. 일부 측면은 이미 논의되었다 여기에 와 그들 중 두 사람은 약간의 비교 .
이러한 프레임 워크 / 구성 요소가 성숙도, 범위, 개발 용이성, Django / RoR 느낌 등에서 어떻게 비교되는지 궁금합니다.
처음 웹 개발을 시작했을 때는 Clojure였습니다. 웹 개발 에 대한 사전 경험 이 전혀 없었 습니다 . 나는 내 삶을 위해 Compojure를 이해할 수 없었습니다. 그 이후로 초보 문서가 개선되었는지 (그렇게 오래 전은 아니었다) 모르겠지만, 당시에는 관리 할 수 없었습니다. 친구가 나를 콧수염으로 가리 켰고 README를 읽은 후 http://try-clojure.org 를 현재 상태로 모을 수있었습니다 . 그래서 사용의 용이성에 관한 한 콧수염이 나를 위해 케이크를 가져 간다고 생각합니다.
그러나, 이 시점에 존재했다, 나는 다른 곡을 노래 할 수 있습니다.
Conjure는 다른 프레임 워크 와 는 매우 다르지만 매우 멋지게 보입니다 . 일반적으로 웹 개발에 대한 나의 매우 제한된 경험을 감안할 때이 문제에 대해 많은 발언이 없지만 Conjure는 나에게 일종의 언 클로저 리라고 느낍니다. 그것은 단지 옳지 않다고 생각 합니다. 나는 그것이 일하는 방식에 익숙하지 않을 수도 있습니다.
업데이트 : 내가 이것을 쓴 지 오래되었습니다. 많은 것들이 바뀌 었습니다. 더 이상 콧수염을 사용하는 사람은 많지 않으며 실제로 유지 관리되지는 않습니다. 충분히 완전하고 간단해서 여전히 작동 할 수 있지만 이제 대신 Compojure 또는 Noir를 사용하는 것이 좋습니다. 이 두 가지 모두 현재 유지되는 프레임 워크이며 둘 다 자신의 업무에 탁월합니다.
업데이트 2 : Noir는 오랫동안 사용되지 않았으며 대부분의 기능은 lib-noir 라는 compojure / 기타 링 기반 웹 프레임 워크에서 사용하도록 설계된 라이브러리로 이동되었습니다 .
나는이 질문이 약간 구식이라는 것을 알고있다. 그러나 나는 Noir 를 아주 좋은 옵션으로 제안 할 수밖에 없었다 .
Noir는 Ring, Compojure 및 Hiccup의 조합을 사용하여 작업을 완료합니다. 확인 해봐!
비요른 고 Lindqvist의 코멘트에서 언급 한 바와 같이 위 , 노아는 죽었다 . 자세한 내용은 여기 .
대신 Compojure 및 lib-noir 사용을 고려하십시오 .
프레임 워크 측면에서 생각하는 것은 아마도 실수 일 것입니다. 더 나은 접근 방식은 귀하의 요구 사항에 가장 적합한 '프레임 워크'를 갖기 위해 조합 한 라이브러리 구성 요소의 관점에서 생각하는 것입니다.
나는 과거에 많은 프레임 워크를 사용했습니다. 대부분은 기본 응용 프로그램을 매우 빠르게 시작하고 실행하는 데 상당히 잘합니다. 그러나 예외없이 나는 그들 모두가 더 자주 좌절감을 느끼는 것을 발견했습니다. 종종 그것은 너무 많은 상용구 때문이거나 개발하는 응용 프로그램과 관련이없는 농구대를 뛰어 넘어야하기 때문입니다.
Clojure에 처음 왔을 때 프레임 워크를 찾기 시작했지만 이것이 잘못된 접근 방식이라는 것을 깨달았습니다. 대신 기본 링 애플리케이션으로 시작한 다음 필요에 따라 라이브러리를 추가하는 것이 훨씬 낫다는 것을 알았습니다. 이것은 시작하기에 더 큰 학습 곡선처럼 보일 수 있지만 실제로는 종종 필요하지 않은 프레임 워크 스캐 폴딩의 전체 힙을 학습하도록 강요되지 않았기 때문에 실제로 효율적입니다.
그러나 라이브러리를 가장 잘 통합하는 방법과 IMO를 가장 잘 통합하는 방법, 원하는 워크 플로에 가장 잘 맞도록 lein project.clj 파일을 가장 잘 구성 할 수있는 방법에 대한 아이디어를 제공하므로 다양한 프레임 워크를 살펴 보는 것이 정말 유용하다는 것을 알게되었습니다.
다음 템플릿이 정말 유용하다는 것을 알았습니다. 나는 그들 중 어떤 것도 '있는 그대로'사용하지 않지만, 내가 작업중인 앱에 가장 적합한 프레임 워크를 개발하기 위해 그들 중 많은 아이디어를 적용 / 도용했습니다.
Luminus 및 Luminus 템플릿 은 매우 광범위한 프레임 워크를 제공합니다. 많은 애플리케이션에 대해 약간 '무거운'것 같지만 다양한 Clojure 라이브러리를 앱에 통합하는 방법에 대한 몇 가지 좋은 예가 있습니다. 메인 웹 사이트에도 몇 가지 유용한 문서가 있습니다.
시약 템플릿이 포함 된 Reagent Project 는 Reagent (react.js) ClojureScript 지원을 사용하는 앱에 좋은 시작점을 제공합니다. 저는 이것이 좋은 자바 스크립트 통합으로 앱을 만드는 가장 쉬운 ClojureScript 라이브러리 중 하나라는 것을 알게되었습니다.
lein-figwheel 은 코드를 수정할 때 브라우저에서 ClojureScript 변경 사항을 볼 수 있도록 clojurescript의 동적로드를 제공하기 위해 figwheel을 사용하는 정말 흥미로운 템플릿입니다. 이제 다른 많은 템플릿에서이 기능을 자체 템플릿에 추가했습니다. 원래 Om을 염두에두고 개발 된 Luminus 및 Reagent 템플릿은 이제 템플릿에 Figwheel 기능을 통합합니다. 대화 형 개발을위한 Clojure 및 ClojureScript의 몇 가지 이점을 실제로 보여줍니다.
Compojure Template 은 훌륭한 출발점입니다. 그것은 모든 기본 링과 구성 요소로 매우 기본적인 구성 기반 프로젝트를 설정합니다. Clojure 웹 개발을 시작하는 가장 좋은 방법은 간단하고 다른 모든 옵션을 익히기 전에 기본에 집중할 수 있기 때문입니다.
다른 많은 템플릿과 프레임 워크가 있으며 그 중 상당수는 아직 살펴볼 시간이 없었습니다. 요즘에는 종종 컴포저 템플릿이나 시약 템플릿으로 시작한 다음 필요한 경우 추가 비트를 추가합니다. 일반적으로 템플릿에 selmar를 포함하고 Luminus에서 사용하는 것과 동일한 구성을 사용합니다.
웹 개발을위한 좋은 '프레임 워크'를 얻는 데 가장 중요한 부분은 lein이 작동하는 방식과 lein project.clj 파일을 실험하고 이해하는 것입니다. 좋은 project.clj 파일이 있으면 작업 흐름이 결정됩니다. 올바른 프로필을 가지고 있고, 다른 방법으로 repl을 시작하고, figwheel 또는 브라우저 repl을 시작하거나 jar 등을 생성 할 수있는 다른 라이브러리를로드하는 기능은 project.clj 파일에 관한 것입니다. 이를 올바르게 설정하면 환경이 필요한 워크 플로 만 제공 할 것입니다.
A new player appeared in the scene as a good alternative to implement REST services is liberator. It makes easier to expose your data as resources while automatically complying with all the relevant requirements of the HTTP specification RFC-2616 and plays nicely with http-kit and Compojure.
Pretty happy with http-kit btw, the live code reload feature is handy.
try road framework for fast web dev https://github.com/zhujinxian/road
(defn render-test [ret tmt]
(-> (resp/response "------render----test------")
(#(resp/content-type %1 "text/plain"))))
(defn foo
"I don't do a whole lot."
[x]
(str "来自源码目录的参数:" x))
(defn handler [^Integer x]
{:$r render-test :text (str "hello world, road goes sucess!" (foo x))})
(defn home [req content ^Integer num]
{:hiccup "home.clj" :content (str "home" content) :num num})
(defroad road (GET "/web-test-0.1.0-SNAPSHOT-standalone/main" handler)
(GET "/web-test-0.1.0-SNAPSHOT-standalone/home/:num{\\d+}" home))
(defn -main [& args]
(log/info "---------log4j test-------")
(jetty/run-jetty road {:port 3000}))
참고URL : https://stackoverflow.com/questions/3325033/comparison-of-clojure-web-frameworks
'Program Tip' 카테고리의 다른 글
requirements.txt 대 setup.py (0) | 2020.11.18 |
---|---|
Java : 해결되지 않은 컴파일 문제 (0) | 2020.11.18 |
선택 상자에서 텍스트를 세로로 정렬하고 싶습니다. (0) | 2020.11.18 |
Git 리포지토리에서 이전에 무시 된 파일 무시 해제 문제 (0) | 2020.11.18 |
Subversion에서 특정 사용자가 변경 한 모든 파일 나열 (0) | 2020.11.18 |