【问题标题】:How do I compile Clojurescript forms from within Clojure?如何从 Clojure 中编译 Clojurescript 表单?
【发布时间】:2012-11-25 21:59:58
【问题描述】:

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

我看到以下question 与此相关。它说要使用离合器中的 js/emit 功能。我搜索了离合器,发现它仅在 cljs-views.clj 的(视图)中提到我在 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 命名空间中?但是如何使用这个(或任何其他)系统来生成我可以传递给 execute-script 的 Clojurescript (javascript) 代码?

【问题讨论】:

    标签: clojure clojurescript


    【解决方案1】:

    使用cljs.closure/build函数:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多