Сравнение веб-фреймворков Clojure [закрыто]

есть несколько веб-фреймворков для Clojure

, а также некоторые библиотеки для работы с определенным веб-разработки подзадач, таких как

  • Enlive для шаблоны
  • икота для шаблоны
  • кольцо обрабатывать материал нижнего уровня с запросами / ответами
  • ClojureQL для настойчивости (это не кажется очень активным, хотя)

есть также сотни библиотек Java, которые будут использоваться. Некоторые аспекты уже обсуждались здесь и двое из них сравнили немного.

интересно, как эти рамки/компоненты сравниваются с точки зрения зрелости, объема, простоты развития, в Django/RoR и чувства и т. д.

6 ответов


когда я впервые начал с веб-разработки, это было с Clojure. У меня было нет предыдущий опыт работы с веб-разработки на всех. Я не мог, хоть убей, понять, что это такое. Я не знаю, была ли улучшена документация для начинающих с тех пор (это было не так давно) или нет, но в то время я не мог с этим справиться. Друг указал мне на усы, и после прочтения README я смог собрать то, что есть http://try-clojure.org in это текущее состояние. Так что, что касается простоты использования, я думаю, что усач берет торт для меня.

, Если этой существовал в то время, я мог бы петь другую мелодию.

колдовать, хотя выглядит очень круто, очень!--13-->разные из других структур. Учитывая мой очень ограниченный опыт работы с веб-разработкой в целом, я не могу сказать много в этом вопросе, но Conjure чувствует себя нелогичным для меня. Я просто не чувствую ... право. Может быть, я просто не привыкла к тому, как это происходит.

UPDATE: прошло некоторое время с тех пор, как я написал это. Многое изменилось. Не многие люди используют усы больше, и он не очень активно поддерживается, хотя он был достаточно полным (и достаточно простым), что он, вероятно, все еще работает, я бы рекомендовал пойти с Compojure или Noir вместо этого. Оба из них в настоящее время поддерживаются, и оба превосходны в своем работа.

UPDATE 2: Noir был устаревшим довольно долгое время, и большая часть его функциональности переместилась в библиотеку, предназначенную для использования из compojure/других кольцевых веб-фреймворков под названием lib-noir.


Я знаю, что этот вопрос немного устарел... но я не мог не предложить ... --1-->Нуар как очень хороший вариант.

Нуар использует комбинацию кольца, Compojure и икоты, чтобы выполнить работу. Зацени!


Как упоминалось в комментарии Бьорна Линдквиста выше,


мышление в терминах структур, вероятно, является ошибкой. Лучший подход-думать в терминах библиотечных компонентов, которые вы собрали вместе, чтобы иметь "структуру", которая наилучшим образом соответствует вашим требованиям.

в прошлом я использовал несколько фреймворков. Большинство из них достаточно хорошо справляются с тем, чтобы заставить вас работать с базовым приложением довольно быстро. Однако, без исключения, я обнаружил, что все они просто расстраивают чаще, чем нет. Часто это из-за слишком много boilerplate или просто прыгать через обручи, которые не актуальны для приложения вашей разработки.

когда я впервые пришел в Clojure, я начал искать рамки, но затем понял, что это неправильный подход. Вместо этого я решил, что лучше всего начать с базового приложения ring, а затем добавлять библиотеки по мере необходимости. Это может показаться большой кривой обучения для начала, но на самом деле это оказывается так же эффективно, потому что ваш заставили выучить целую кучу каркасных лесов, которые вам часто не нужны.

тем не менее, я нашел, что просмотр различных фреймворков действительно полезен, поскольку он дает мне идеи о том, как лучше интегрировать библиотеку и, что более важно, IMO, как вы можете лучше структурировать свой проект lein.файл clj лучше всего подходит для рабочего процесса, который вы хотите.

Я нашел следующие шаблоны очень полезны. Я не использую ни один из них "как есть", но адаптировал / украл идеи у многих из них для разработки рамки, которые лучше всего подходят для приложения, над которым я работаю

  • светильник и Шаблоны Luminus обеспечивает очень обширные рамки. Я нахожу их немного "тяжелыми" для многих приложений, но есть несколько замечательных примеров того, как интегрировать различные библиотеки Clojure в ваше приложение. На главном веб-сайте также имеется полезная документация.

  • Реагент Проекта, который включает шаблон реагента обеспечивает хорошую отправную точку для приложения с помощью реагента (реакции.js) поддержка ClojureScript. Я обнаружил, что это одна из самых простых библиотек ClojureScript для создания приложения с хорошей интеграцией Javascript.

  • lein-figwheel - действительно интересный шаблон, использующий figwheel для обеспечения динамической загрузки clojurescript, чтобы вы видели изменения ClojureScript в браузере при изменении кода. Многие другие шаблоны теперь добавили это функциональность собственных шаблонов. Первоначально разработанный с учетом Om, Шаблоны Luminus и Reagent теперь также интегрируют функциональность Figwheel в свои шаблоны. Действительно показывает некоторые из преимуществ Clojure и ClojureScript для интерактивной разработки.

  • Шаблон Compojure является отличной отправной точкой. Он устанавливает очень базовый проект на основе compojure со всеми основными кольцами и материалами compojure. Отличный способ начать с Clojure web развитие, потому что это просто и позволяет сосредоточиться на основах, прежде чем утонуть под всеми другими вариантами.

есть много других шаблонов и фреймворков, многие из которых я еще не успел посмотреть. В эти дни я часто начинаю с шаблона compojure или шаблона реагента, а затем добавляю дополнительные биты, если и когда это необходимо. Я обычно также включаю selmar для шаблонов и использую по существу ту же конфигурацию, что и Luminus.

возможно, самая важная часть получения хорошей "структуры" для веб-разработки-это эксперимент и понимание того, как работает lein и проект lein.файл clj. Хороший проект.файл clj определит ваш рабочий процесс. Имея правильные профили, возможность запускать repl по-разному и загружать разные библиотеки, которые позволяют вам запускать figwheel или браузер repl или генерировать банку и т. д., Это все о вашем проекте.файл clj. Получите это право и ваша окружающая среда будет предоставьте только необходимый рабочий процесс.


новый игрок появился в сцене в качестве хорошей альтернативы для реализации услуг REST является освободитель. Это облегчает предоставление ваших данных в качестве ресурсов при автоматическом соблюдении всех соответствующих требований спецификации HTTP RFC-2616 и хорошо играет с http-kit и Compojure.

довольно доволен http-kit btw, функция перезагрузки live code удобна.


попробуйте Road framework для 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}))