Ответ 1
Cemerick на помощь снова: Austin (https://github.com/cemerick/austin) - это именно то, что вам нужно.
Остин предлагает вам два варианта: либо REPL, где JS оценивается в браузере ( "проект REPL" ), либо более полный, интегрированный REPL с подключением к браузеру. Похоже, что последнее - это то, что вам нужно, и вам нужно немного усложнить его документы: https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample
Чтобы получить работу REPL, связанную с браузером, пример Chas достаточно прост, чтобы следовать, и сводится к следующему:
- Добавьте небольшое промежуточное программное обеспечение или шаблонную магию, чтобы добавить элемент JS script на вашу HTML-страницу, и что script должен содержать вывод
(cemerick.austin.repls/browser-connected-repl-js)
- Запустите nREPL, запустите свой сервер звонков, а затем
(def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
для создания среды REPL. - Поверните сеанс nREPL с Clojure на ClojureScript REPL с помощью
(cemerick.austin.repls/cljs-repl repl-env)
- Подключитесь к используемому серверному приложению с браузером, и вы должны быть подключены.
(.alert js/window "Hi!")
должен доказать это. - Использование стандартных команд Emacs nREPL будет работать как ожидалось, компиляция ClojureScript в JavaScript и отправка его в браузер для оценки.
Основное различие между Piggieback и Austin - это первый и второй шаги: атом используется промежуточным программным обеспечением для добавления встроенного блока JavaScript, который соединяется с nREPL. Поскольку URL-адрес HTTP определяется во время выполнения, сервер Ring и клиентский JavaScript должны работать совместно.
FWIW Я создал функцию в моем пространстве имен user
, чтобы ускорить подключение CLJS REPL:
(defn cljs-browser-repl
"Fire up a browser-connected ClojureScript REPL"
[]
(let [repl-env (reset! cemerick.austin.repls/browser-repl-env
(cemerick.austin/repl-env))]
(cemerick.austin.repls/cljs-repl repl-env)))