2014-01-17 2 views
11

Я начинаю свою новую фазу обучения Clojure. Я хочу создать веб-приложение, но я не знаю, какой из них использовать. Я искал несколько часов в Интернете, и все, что я нашел, перекрывает друг друга, и я немного смущен этим.Какая связь между Leiningen, Compojure, Luminus и Ring?

У меня есть опыт работы с ASP.NET MVC и JavaEE, поэтому, если есть что-то связать веб-программирование Clojure с этими впечатлениями, я рад услышать об этом.

Какая связь между Leiningen, Compojure, Luminus и Ring?

ответ

10

Leiningen - это инструмент для сборки. Что-то вроде Maven в Java-мире (на самом деле он использует Maven под капюшоном). Вы определяете зависимости и конфигурации в project.clj, а затем запускаете приятные команды Leiningen для загрузки зависимостей, компиляции кода, запуска приложения и т. Д.

Ring является базовым веб-каркасом. Вы можете сравнить его с сервлетами в JavaEE. Он обеспечивает базовую функциональность для обработки запросов, но не является очень высоким уровнем или полным набором функций. В частности, он требует, чтобы вы сами отправляли маршрут.

И если вы не хотите испортить маршрутизацию, просто используйте Compojure. Поскольку он указывает на свой GitHub page, «Compojure - это небольшая библиотека маршрутизации для Ring, которая позволяет веб-приложениям состоять из небольших независимых частей». Если вам нужно сравнить с Java-мирами, я думаю, что Spring MVC довольно близко является аналогом.

Я еще не слышал о Luminus, но похоже, что он пытается заменить Noir (это устарело сейчас). Оба Luminus и Noir построены поверх Ring и Compojure и расширяют функциональность Compojure.

+0

Luminus не расширяет функциональность Compojure. – Chiron

+0

@Chiron: Я думаю, вы имеете в виду, что Luminus связывает другие библиотеки вместе (например, lib-noir), а не добавляет новые возможности. Если вы имеете в виду что-то еще, не стесняйтесь продлить ответ. – ffriend

+1

Кольцо на самом деле * очень * гибкое - настолько, что все другие веб-инструменты построены поверх него! То, что он не является высокоуровневым, или полным возможностей. – amalloy

7

Leiningen - это инструмент для сборки, оптимизированный для разработки Clojure. Он взаимодействует в основном с репозиториями Maven. Вы можете, например, сгенерировать файл pom.xml из вашего проекта .clj

Ring - это низкоуровневый API для разработки веб-приложений. Например, он использует структуры данных карт для переноса запроса и ответа. И, конечно же, он обслуживает обработчики, средние товары и другие важные артефакты.

Compojure предлагает элегантную библиотеку маршрутизации. Большая часть времени используется с кольцом.

Luminus - это коллекция многих библиотек Clojure, которые помогут вам начать разработку веб-приложений в Clojure.

6

Различия между этими элементами уже хорошо подобраны, поэтому я попытаюсь кратко проинформировать вас о моих исследованиях о альтернативах Clojure для людей с фонов ASP.NET MVC, таких как я. Я предлагаю вам изучить эту пару

Caribou

Как собственная страница говорит:

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

Мое резюме: быстрая среда для моделирования структур данных как-то «объектно-ориентированная мода», где у вас есть модели и уровень данных. Вы найдете это более знакомым, исходящим из .NET, поскольку он предоставляет множество готовых к использованию материалов, даже веб-интерфейс для игры с моделями.

Pedestal

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

Мое резюме: очень функциональный подход к разработке веб-приложений, хорошо продуманными и мощный, но определенно не знакомы или похожие на ASP.NET, действительно стоит отзыв

Немного не в тему просто упомянуть Liberator для ради завершения на всякий случай, если вы хотите реализовать REST API с Clojure.