Какая связь между Лейниненом, Компауре, Люминусом и Кольцом?
Я начинаю новую фазу обучения Clojure. Я хочу создать веб-приложение, но я не знаю, какой из них использовать. Я искал несколько часов в Интернете, и все, что я нашел, перекрывает друг друга, и я немного смущен этим.
У меня есть опыт работы с ASP.NET MVC и JavaEE, поэтому, если есть что-то связанное с Clojure веб-программированием с этими событиями, я рад слышать об этом.
Какая связь между Leiningen, Compojure, Luminus и Ring?
Ответы
Ответ 1
Leiningen - это инструмент построения. Что-то вроде Maven в Java-мире (на самом деле он использует Maven под капюшоном). Вы определяете зависимости и конфигурации в project.clj
, а затем запускаете красивые команды Leiningen для загрузки зависимостей, компиляции кода, запуска приложения и т.д.
Кольцо - это базовая веб-структура. Вы можете сравнить его с сервлетами в JavaEE. Он обеспечивает базовую функциональность для обработки запросов, но не является очень высоким уровнем или полным набором функций. В частности, он требует, чтобы вы сами отправляли маршрут.
И если вы не хотите испортить маршрутизацию, просто используйте Compojure. Поскольку он указывает на странице GitHub, "Compojure - это небольшая библиотека маршрутизации для Ring, которая позволяет веб-приложениям состоять из небольших независимых частей". Если вам нужно сравнить с Java-мирами, я думаю, что Spring MVC довольно близко является аналогом.
Я раньше не слышал о Luminus, но похоже, что он пытается заменить Noir (который устарел сейчас), Оба Luminus и Noir построены поверх Ring и Compojure и расширяют функциональность Compojure.
Ответ 2
Leiningen - это инструмент построения, оптимизированный для разработки Clojure. Он взаимодействует в основном с репозиториями Maven. Например, вы можете сгенерировать файл pom.xml из вашего project.clj
Ring - это API уровня низкого уровня для разработки веб-приложений. Например, он использует структуры данных карт для переноса запроса и ответа. И, конечно же, он обслуживает обработчики, средние товары и другие важные артефакты.
Compojure предоставляет элегантную библиотеку маршрутизации. В большинстве случаев он используется с кольцом.
Luminus - это коллекция из многих библиотек Clojure, которые помогут вам начать разработку веб-приложений в Clojure.
Ответ 3
Различия между этими элементами уже хорошо отреагированы, поэтому я попытаюсь кратко рассказать вам о моих альтернативах для людей с ASP.NET MVC, например, как я. Я предлагаю вам изучить эту пару.
Caribou
Как говорится на собственной странице:
Карибу - это динамичная экосистема веб-приложений для создания готовых веб-пользователей с минимальными усилиями. Кованый в огне ежедневных требований, Caribou представляет собой набор решений проблем, с которыми сталкиваются веб-разработчики каждый день. Философия его развития состоит в том, чтобы решить каждую проблему, с которой мы сталкиваемся один раз, в общем, что можно многократно использовать. Любое ненужное или обструктивное было сожжено от износа постоянного использования.
Мое резюме: быстрая среда для моделирования структур данных как-то "объектно-ориентированная мода", где у вас есть модели и уровень данных. Вы найдете это более знакомым, исходящим из .NET, поскольку он предоставляет множество материалов, готовых к использованию из коробки, даже веб-интерфейс для игры с моделями.
Pedestal
Пьедестал - это совокупность взаимодействующих библиотек, которые вместе создают путь для разработки конкретного вида приложения. Это позволяет разработчикам использовать Clojure для создания интернет-приложений, требующих совместной работы в режиме реального времени и ориентации на несколько платформ.
Короче говоря: Pedestal обеспечивает лучший, сплоченный способ создания богатых клиентских веб-приложений в Clojure.
Клоюристы, ищущие стандартный способ создания интернет-приложений, будут любить пьедестал. Вместо того, чтобы создавать искусство из найденных объектов, теперь они смогут формировать единую согласованную форму, соответствующую их видению.
Мое резюме: очень функциональный подход к разработке веб-приложений, хорошо продуманный и мощный, но определенно не знакомый или похожий на ASP.NET, действительно стоит обзор
Немного из темы, просто упомянуть Liberator ради завершения на всякий случай, если вы хотите реализовать REST API с помощью Clojure.