Full-Stack Clojure: как получить REPL браузера и сервера REPL одновременно во время разработки - PullRequest
0 голосов
/ 29 января 2019

Я разрабатываю свое первое полнофункциональное приложение Clojure.Мне удалось заставить работать в Linux Mint следующее:

  • leiningen
  • figwheel + garden [auto] = Интерактивная разработка SPA с горячим кодом и перезагрузкой CSS
  • leiningen REPL для сервера с rebel-readline, запуск сервера в REPL и подача SPA в браузер
  • leiningen uberjar компилируется, запускается файл JAR и SPA обслуживается сервером

Что я не могу понять, как это сделать, так это настроить среду разработки, которая позволяет мне одновременно использовать REPL сервера и SPA REPL, чтобы я мог интегрировать sente для поддержки веб-сокета и отслеживать приложение перекомпоновки.состояние БД в рамках SPA REPL.Полагаю, в идеале мне бы хотелось, чтобы figwheel + gargen [auto] работал со SPA, связываясь с сервером через веб-сокет sente.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Оказывается, что функция sente, используемая в приложении ClojureScript, называемая make-channel-socket !, вызывается для инициирования подключения обратно к серверу sente-websocket, работающему на сервере приложения, имеет третий параметр, карту параметров,ключ с именем: хост.По умолчанию sente устанавливает значение: host для сервера, с которого было загружено приложение ClojureScript.

Если выполняется «lein figwheel» и загружается приложение ClojureScript через сервер figwheel, sente по умолчанию пытается выполнитьподключиться к серверу figwheel, который, разумеется, НЕ работает с сервером веб-сокетов sente.

В режиме разработки необходимо: 1. Запустить сервер приложений в терминале (например, 'lein repl') 2Скомпилируйте приложение ClojureScript с помощью значения: host: localhost: 3. Запустите приложение ClojureScript через figwheel в другом терминале 4. Подключитесь к серверу figwheel из браузера (например, «localhost: 3449»)

Когда приложение ClojureScript загружается в браузер через сервер figwheel, оно выполняет вызов подключения sente, который теперь устанавливает соединение с сервером sente websocket, работающим на сервере приложений.

Это ФАНТАСТИЧНО!Теперь можно использовать figwheel с его REPL для браузера и одновременно запускать сервер приложений с его REPL.

0 голосов
/ 29 января 2019

Мой ответ на самом деле не тот, о котором вы просили, но, тем не менее, он может вас заинтересовать. Я считаю, что терпите меня.

Вы пробовали редактор lightmod ?Он стремится быть полноценным редактором с минимальными настройкамиФактически, когда вы запускаете его, вы можете предварительно выбрать шаблон для вашего проекта и автоматически получить REPL для бэкенда и REPL для вашего SPA с автоматической перезагрузкой и т. Д. Он не имеет всех вкусностей Emacs, но я нашел его действительно хорошимчтобы получить быструю настройку.

...