如何在Clojure中编译Clojurescript表单?

11

我正在使用clj-webdriver在Clojurescript Web应用程序上进行一些基于Selenium的测试。有时候,在测试运行时,我想要调整应用程序本身的某些内容。我发现clj-webdriver有一个叫做(execute-script js args)的东西,它接受一个JavaScript代码字符串并在当前测试浏览器上运行它。我已经测试过了,似乎可以工作。但是我想将ClojureScript代码传递给execute-script。我需要一个能够将我的Clojure形式编译成ClojureScript代码的东西。

我看到以下问题与此相关。它建议使用Clutch中的js/emit函数。我搜索了Clutch,并发现它仅在cljs-views.clj中的(view)中提到。我在repl中尝试了以下操作:

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

1个回答

5
使用 cljs.closure/build 函数:
(use '[cljs.closure :only [build]])
(build '(print "hello") {:optimizations :simple :pretty-print true})

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接