Зрелые веб-фреймворки Clojure? [закрыто]

Каков текущий выбор зрелых веб-фреймворков Clojure? Я ищу какую-то матрицу функций, рассказывающую мне, что и в какой степени поддерживают популярные фреймворки, в том числе:

  • Шаблон ответа (ответ, написанный на Clojure или в какой-либо другой разметке - например, как JSP с плитками)
  • HTTP-сеансы
  • REST с автоматическим отображением URL-адресов в функции-действия и параметры
  • HTML-формы (параметры доступны как карта, обработка ошибок, проверка)
  • Поток приложения (известный из фреймворков Java - обработчики запросов возвращают идентификаторы действий, которые в конечном итоге обрабатывается рендерерами)
48
задан Konrad Garus 23 August 2010 в 21:32
поделиться

1 ответ

Возможно, мой ответ на Что является хорошей отправной точкой для разработки RESTful веб-сервиса на Clojure? вопрос на SO может быть вам полезен. В нем упоминаются некоторые важные веб-библиотеки для Clojure (со ссылками и краткими аннотациями). Ключевой момент, который я хотел бы повторить здесь, изложен в первом абзаце этого ответа:

Прежде всего, я думаю, что вы вряд ли найдете единое решение для всего этого в Clojure (разве что в виде Java-библиотеки, которая будет использоваться через interop). То, что становится стандартным веб-стеком Clojure, включает в себя ряд библиотек, которые люди смешивают и сочетают самыми разными способами (поскольку они, к счастью, имеют тенденцию быть идеально совместимыми).

К этому я бы добавил, что вам, вероятно, не стоит ожидать, что вы будете работать с вещами с помощью "потока приложений", который вы можете знать из Java (или, если вы считаете, что он вам действительно нужен, вам, вероятно, придется создать свою собственную библиотеку для его поддержки!) Но это не страшно, так как люди, похоже, очень довольны подходом Ring "обработчик - это функция", дружественным подходом к промежуточному ПО высшего порядка.


Чтобы ответить на ваши пули:

  • Шаблонизация ответов:
    Существует ряд решений, специфичных для Clojure, включая Enlive и Hiccup (Enlive - очень мощный движок для скраппинга / шаблонирования / преобразования HTML; Hiccup - DSL для написания HTML на Clojure с тем приятным свойством, что он рендерит быстро). Кроме того, это, вероятно, одно из мест, где имеет смысл опуститься до Java и использовать что-то вроде, скажем, StringTemplate. Это даже имеет ту хорошую сторону, что препятствует смешиванию шаблонов и логики! (Я полагаю, Стюарт Хэллоуэй упоминал, что Relevance - его компания - использует эту стратегию в своей работе и добилась большого успеха)

  • HTTP-сессии
    . Это будет Sandbar, я полагаю. Автор начал серию постов в блоге о нем, которая выглядит очень многообещающе.

  • REST с автоматическим отображением URL в action-функции и params
    . Это Ring & Compojure и/или Moustache. См. ниже.

  • HTML-формы (параметры доступны как карта, обработка ошибок, валидация)
    Как выше.

  • Поток приложений (известен из Java-фреймворков - обработчики запросов возвращают идентификаторы действий, которые в конечном итоге обрабатываются рендерерами)
    . Как упоминалось выше, не совсем то, что люди обычно делают в Clojure.


В качестве отправной точки в изучении веб-стека Clojure очень полезен этот учебник по Ring автора Ring Марка МакГранагана. У автора Compojure Джеймса Ривза есть немного документации по Compojure. Возможно, мой недавний ответ на вопрос В чем "большая идея" маршрутов compojure? тоже может быть полезен. Среди источников Ринга также есть отличный документ SPEC.

33
ответ дан 26 November 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: