"богатые" веб-приложения с Clojure

У меня возникли определенные трудности при создании веб-приложения на основе Clojure. Это простое приложение CRUD, которое я начал изучать в веб-экосистеме Clojure. Я экспериментирую с разными библиотеками, такими как Hiccup, Enlive, Compojure и Noir (хотя похоже, что Noir находится на грани отказа от поддержки).

Мой вопрос состоит из двух вопросов. Во-первых, это очевидное отсутствие соглашений для создания веб-приложений на закрытии. А во-вторых, мне нужны подсказки по созданию «богатых» html-компонентов.

Что мне нравится в методе Clojure, так это простота совместной работы разных библиотек. Замена enlive на икоту и наоборот - не проблема. Все играет свою простую и единственную роль. Очень сильно отличается от такой сложной структуры, как JSF.

Но в этом суть: эта огромная свобода заставляет меня чувствовать себя немного потерянным. В JSF я знаю, где всему есть свое место. Я использую Spring для интеграции всех компонентов, Spring-Security для обработки всего сеанса. Библиотеки компонентов избавляют меня от стресса, связанного с проблемами html, javascript и ajax.

В Clojure мне не хватает вышеупомянутых библиотек компонентов. Я обнаружил, что реализую такие вещи, как datatable с такими функциями, как чередование цветов строк, разбиение на страницы, порядок столбцов, инкрементный фильтр и так далее. И у меня возникают вопросы о том, как синхронизировать состояние таких компонентов в браузере и на сервере, особенно когда включен ajax. Я не смог найти в сети сколько-нибудь зрелого ответа.

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

Какие предложения есть для мира Clojure? Является ли ClojureScript One решением? Я еще не изучал это. Кто-нибудь знает какие-либо библиотеки компонентов, которые предлагают аналогичные функции, такие как, например, RichFaces datatable? Есть ли предпочтительный способ работы с ajax?



person nansen    schedule 16.12.2012    source источник
comment
Этот форум не для обсуждения. Это для решения конкретной проблемы. Clojurescript выгружает Javascript для браузера. Что касается серверной части, то Noir просто устарел в пользу Compojure.   -  person octopusgrabbus    schedule 16.12.2012
comment
Я знаю, что этот форум не обсуждается. Но я не жду однозначного «правильного» ответа. Но я уберу последнее предложение. Как я уже сказал, я особо не изучал «clojurescript One». Я знаю, что такое clojurescript. «Clojurescript One» показался мне отправной точкой для подведения итогов. Но, возможно, я ошибаюсь, и это всего лишь учебное приложение для начала работы с clojurescript.   -  person nansen    schedule 17.12.2012


Ответы (1)


Все, что я могу вам дать, это несколько рекомендаций:

  • обмениваться сообщениями между клиентом и сервером в JSON или EDF
  • отделите код графического интерфейса пользователя от кода управления состоянием на клиенте
  • поместите свой код управления состоянием в кроссовер, чтобы вы могли протестировать его вне браузера
  • сделайте так, чтобы код графического интерфейса вашего клиента был как можно более независимым от конкретной библиотеки, выбирайте библиотеки с активными сообществами и наименьшими зависимостями
person Hendekagon    schedule 16.12.2012
comment
кроссовер - это когда вы объявляете путь вашего кода, который будет скопирован cljsbuild (плагином lein) из вашего источника Clojure в ваш источник Clojurescript, это делается с помощью строки в вашем project.clj. Я использовал эту часть вашего кода в чистом Clojure, без каких-либо зависимостей от Clojurescript, что позволяет проводить тестирование в обычной среде Clojure. - person Hendekagon; 17.12.2012
comment
Я определенно хотел бы взглянуть на полный пример с исходными кодами в GitHub. Выполнимо? - person Jacek Laskowski; 17.12.2012