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


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

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

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

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

интересно, как эти рамки/компоненты сравниваются с точки зрения зрелости, объема, простоты развитие, чувство Джанго / Рор, ЕТК.

6 64

6 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Luminus и шаблоны 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 или генерировать jar и т. д.-Это все о вашем проекте.файл clj. Получить это право, и Ваше окружение будет предоставьте только рабочий процесс, который вам нужен.

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

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

попробуйте road framework для быстрого веб-разработчика 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}))