Библиотека графического интерфейса JavaScript, которую можно использовать из ClojureScript?
-
12-12-2019 - |
Вопрос
В одном из моих текущих проектов веб-разработки нам нужно создать страницу (на самом деле собственное мини-приложение), которая будет иметь интерактивный интерфейс «Веб 2.0», больше похожий на графическое настольное приложение, чем на типичную веб-страницу.
Я надеюсь использовать язык более высокого уровня, который можно скомпилировать в JS для логики на стороне клиента, а не программировать непосредственно на JS, и ClojureScript — мой первый выбор.
Я ищу библиотеку JS GUI, которую можно использовать из ClojureScript и которая поддерживает стиль программирования, аналогичный «настольным» библиотекам GUI, таким как Swing, QT, wxWidgets и т. д.Это должно позволить мне создать всплывающее окно <div>
«окна», поместите виджеты, такие как кнопки/метки/и т. д.в них привязывайте к виджетам обработчики событий и так далее.Знаете ли вы один, который бы сработал?
Решение
Вам следует рассмотреть возможность использования библиотеки Google Closure.Он имеет все функции, которые вы просите, и его определенно можно использовать из ClojuresScript, я с ним поигрался.Видеть http://closure-library.googlecode.com/svn-history/r1430/docs/index.html
Другие советы
Clojurescript еще молод — я не думаю, что существуют зрелые фреймворки такого калибра (пока?).Сказав это, я создаю пользовательский интерфейс, используя следующие компоненты:
- Твиттер-бутстрап + JQuery для визуальных эффектов и элементов пользовательского интерфейса.
- Друг Часа Эмерик для аутентификации на стороне сервера
- Compojure + Кольцо + Пристань для сервера
- Ящик (Клоюрескрипт икота) для генерации html/dom
- Джейк для упаковки JQuery
- Принести и/или Береговой отпускпульты для клиент-серверного RPC
- Механизм pubsub Shoreleave или Clojure
add-watch
для привязки данных
Хорошей особенностью Clojure и Clojurescript является то, что они отдают предпочтение простым функциям в общих структурах данных.Вот почему вы склонны видеть несколько небольших библиотек, которые выполняют одну конкретную работу, но очень хорошо работают вместе, в отличие от гигантских монолитных фреймворков с объектной моделью, которая требует от вас полностью принять один образ мышления.
Я думаю, что ExtJS подойдет лучше всего в вашем случае, хотя это чистый JS.На данный момент это самая продвинутая библиотека веб-интерфейса, позволяющая создавать веб-приложения, аналогичные тем, которые используются на языках рабочего стола и IDE.Просто проверьте их демо.Я не думаю, что в обозримом будущем появится что-то подобное для ClojureScript.