Какая связь между Лейниненом, Компауре, Люминусом и Кольцом?

Я начинаю новую фазу обучения 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.