Я изучаю что-то легкое, что, как минимум должен поддерживать следующие функции:
Я знаю, что относительно легко прокрутить мою собственную микроплатформу для каждой из этих опций, но почему изобретают велосипед, если что-то как этот уже существует? Особенно, если это:
Прежде всего, я думаю, что вы вряд ли найдете единственное упакованное решение для всего этого в Clojure (кроме как в виде библиотеки Java, которая будет использоваться через взаимодействие). То, что становится стандартным веб-стеком Clojure, состоит из ряда библиотек, которые люди смешивают и сопоставляют всевозможными способами (поскольку они, к счастью, обычно идеально совместимы). 1
Вот список некоторых строительных блоков, которые могут оказаться полезными:
Ring - базовая библиотека обработки HTTP-запросов Clojure; все другие библиотеки webby (для написания маршрутов и т. д.), о которых я знаю, совместимы с Ring. Ring активно развивается, у него сильное сообщество, он очень хорошо написан и имеет хороший документ SPEC, в котором подробно описывается его философия дизайна. Эта запись в блоге представляет собой хороший пример того, как ее можно использовать (реагируя на коммиты GitHub).
Sandbar - в настоящее время это библиотека аутентификации, запланированы дополнительные функции; в разработке.
Compojure - зрелая и надежная библиотека, которая обеспечивает хороший DSL для написания маршрутов, которые будут использоваться поверх Ring. Это даст вам удобную обработку параметров URL.
Compojure-rest - «библиотека для создания приложений RESTful поверх Compojure ». Compojure-rest, насколько я могу судить, находится на ранней стадии развития; возможно, вы могли бы увидеть в этом возможность повлиять на его дизайн.: -)
Для работы с XML есть clojure.contrib.lazy-xml
(и вспомогательная библиотека clojure.contrib.zip-filter.xml
) и Enlive (встроенное пространство имен clojure.xml
в настоящее время не очень удобно); они будут использоваться в тандеме (хотя для ваших целей может быть достаточно первого).
Для JSON есть библиотека в contrib и clojure-json (и я думаю, была по крайней мере еще одна библиотека, которую я сейчас, кажется, забываю ...); выберите тот, который вам больше всего нравится.
Все будут полностью довольны стилем разработки, управляемым REPL (см. Принятый ответ на этот вопрос SO , где описан трюк с кольцом, который здесь очень подходит). Я полагаю, что приведенный выше набор ссылок оставляет несколько белых пятен (в частности, история аутентификации все еще прорабатывается, насколько я могу судить), но, надеюсь, это хорошее начало.
1 Единственное известное мне однопакетное решение для создания веб-приложений на Clojure - это Conjure , вдохновленное Rails; К сожалению, я должен признать, что я мало что знаю об этом, поэтому, если вам интересно, перейдите по ссылке и посмотрите источники, вики и т. д.