Как компилировать формы Clojurescript из Clojure?

Я использую clj-webdriver для тестирования веб-приложения Clojurescript на основе Selenium. Иногда в самом приложении есть что-то, с чем я хочу возиться во время выполнения теста. Я вижу, что в clj-webdriver есть что-то под названием (execute-script js args), которое берет строку кода Javascript и запускает ее в текущем тестовом браузере. Я проверил это, и, похоже, это работает. Однако я хотел бы передать код clojurescript в execute-script. Мне нужно что-то, что скомпилирует мою форму Clojure в код Clojurescript.

Я вижу следующий вопрос такого рода. В нем говорится, что нужно использовать функцию js/emit из муфты. Я искал сцепление и нашел, что оно упоминается только в (представлении) в cljs-views.clj Я попытался сделать следующее в реплике:

user> (use 'com.ashafa.clutch.cljs-views)  
  nil  
user> view 
  <core$comp$fn__4034 clojure.core$comp$fn__4034@ebd3f80> 
user> js/emit 
  CompilerException java.lang.RuntimeException: No such namespace: js, #compiling (NO_SOURCE_PATH:1)   
user>

Это не так уж удивительно, как js может быть в обычном имени clojure? Но как мне использовать эту (или любую другую) систему для генерации кода Clojurescript (javascript), который я могу передать execute-script?


person Stephen Cagle    schedule 25.11.2012    source источник


Ответы (1)


Используйте функцию cljs.closure/build:

(use '[cljs.closure :only [build]])
(build '(print "hello") {:optimizations :simple :pretty-print true})

Дополнительные примеры приведены в комментарии внизу закрытия. клдж. Также есть варианты вывода в файл.

person Dan Lipsitt    schedule 15.01.2013