2015-05-23 1 views
7

Я хотел бы использовать figwheel, чтобы перезагрузить интерфейс проекта all-clojure, с которым я играю.Как использовать figwheel с кольцом-обработчиком, который является компонентом?

Бэкэнд служит REST API и организована как набор components, из которого я создаю систему в моей main функции (я использую duct создать компонент обработчика). Я хочу передать состояние своим обработчикам с помощью закрытий, но единственным средством настройки figwheel для использования моего обработчика, кажется, является установка ключа ring-handler в project.clj, и для этого требуется передать обработчик, который определен в пространстве имен при lein времени запуска ,

Итак, есть способ настроить figwheel, когда я запускаю мой компонент? Я все еще очень новенький в Closure, поэтому, скорее всего, я что-то пропустил на виду.

Passing state as parameter to a ring handler? - аналогичный вопрос, но ответ там требует привязки обработчика var на верхнем уровне пространства имен, чего я пытаюсь избежать.

ответ

2

Figwheel не должен быть обработчиком. Вы можете обернуть компонент, который автообновляется, пока ваш сервер запущен и запущен, анализируя код this в компоненте, зависящем от вашего серверного компонента, чтобы он начинался первым. Обратите внимание, что это официально не поддерживается. Запуск lein figwheel из оболочки для загрузки отдельного JVM является обычным использованием.

Если вы используете компонент Stuarts lib, я бы рекомендовал обернуть обработчик звонка из серверного компонента, а не через project.clj. Используйте this project or adapt the code snippet для компонента причала.

Обратите внимание, что figwheel является devtooling, поэтому в процессе производства вы, скорее всего, хотите обслуживать скомпилированный js-файл, созданный с помощью e. г. lein-cljsbuild.