如何在Clojure中编译Clojurescript表单?

时间:2012-11-25 21:59:58

标签: clojure clojurescript

我正在使用clj-webdriver在Clojurescript网络应用上进行一些基于Selenium的测试。有时,应用程序本身中有一些东西,我希望在测试运行时能够摆弄它。我看到clj-webdriver有一个名为(execute-script js args)的东西,它接受一串Javascript代码并在当前的测试浏览器上运行它。我测试了这个,它似乎工作。我想将clojurescript代码传递给execute-script。我需要一些能将我的Clojure表单编译成Clojurescript代码的东西。

我看到以下与question有关的内容。它说要使用离合器的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 namesapce?但是如何使用这个(或任何其他)系统生成我可以传递给execute-script的Clojurescript(javascript)代码?

1 个答案:

答案 0 :(得分:4)

使用cljs.closure/build功能:

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

closure.clj底部的评论中有更多示例。还有输出到文件的选项。