Я слышал о двух фреймворках веб-приложений на основе Clojure: Webjure и Compojure. Может ли кто-нибудь сообщить мне, что лучше?
webjure vs compojure?
Ответы (8)
Теперь вы можете добавить в список кольцо. Все эти фреймворки являются очень новыми и, вероятно, будут быстро развиваться (или умереть), но Compojure, похоже, наиболее активно разрабатывается за последние 6 месяцев или около того.
«Лучше» - слишком субъективный вопрос, чтобы на него можно было получить однозначный ответ. Попробуйте их все и посмотрите, что работает.
Compojure до сих пор работает для меня очень хорошо. Мне нравится простота дизайна, гибкость и тот факт, что он способствует приятному идиоматическому функциональному стилю.
Пример сервера:
(use 'compojure)
(defroutes my-app
(GET "/index.html"
(html
[:h1 "Hello World!!"]
[:body "This is some text"]))
(ANY "*"
[404 "Page not found"]))
(run-server {:port 80}
"/*" (servlet my-app))
Обратите внимание, что Compojure внутренне использует Ring.
Я поддерживаю рекомендацию Рейна по поводу усов.
Прямо сейчас мы используем Ring (базовый уровень, промежуточное ПО), Mustache (маршрутизация), Hiccup (генерация html). Мы только начали использовать Compass для CSS (http://compass-style.org/). Пока я доволен этой коллекцией небольших библиотек, а не большим фреймворком «полного стека» (Django, Rails и т. Д.).
Похоже, что сейчас наибольший ажиотаж вызывает Compojure. Не обязательно свидетельствует о качестве, но тот, у кого больше глаз, вероятно, будет развиваться быстрее всего.
Также есть Moustache, который я использую в TryClojure вместе с Ring. Это довольно круто.
Compojure основан на Ring, низкоуровневом фреймворке, который не пытается скрыть большую часть HTTP. Это похоже на WSGI (Python) или Rack (Ruby). Ring имеет концепцию промежуточного программного обеспечения, небольших фрагментов кода, которые могут делать что-то значимое с HTTP-запросом и / или ответом, например, выгружать информацию из заголовка, управлять куки-файлами и т. Д. Compojure - это фреймворк более высокого уровня, чем-то похожий на Sinatra в Ruby. Его цель - предоставить удобный API (или DSL, если хотите) для большинства задач, с которыми сталкивается разработчик веб-приложений. Обычно он используется вместе с библиотекой генерации HTML, такой как Hiccup.
Я мало слышал о Webjure в последние несколько месяцев, я не уверен, что он находится в активной разработке (но мне было бы интересно узнать больше). Он предшествует Ring, AFAICT, который, кажется, стал чем-то вроде стандарта для веб-фреймворков Clojure.
Я создавал собственный проект с помощью Compojure, и он отлично сработал. На самом деле это не сильно мешает и позволяет вам сосредоточиться на том, что важно, на вашей проблемной области. В проекте около 1100 строк закрытия, чтобы вы могли представить себе размер.