如何将单个clojurescript文件作为脚本执行?

时间:2014-12-16 11:24:34

标签: clojure clojurescript

在clojure中,我可以使用lein-exec插件lein来执行"执行"单个clojure文件作为这样的脚本:

lein exec foo.clj

当然,我也很好奇是否有类似的方式来运行" node.js上的单个clojurescript文件直接没有编译和运行.js文件的过程(可能在终端中)?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果要执行它,需要将Clojurescript编译为JS。我知道lein cljsbuild没有直接的调用方法,因为CLJS在多个环境(node,rhino,v8,browser等)中执行,并且每个都非常具体地说明如何运行JS,所以它不能你的选择。

以下是在节点中运行cljs脚本的几种快速方法(请记住,编译需要时间,因为它是基于Java的,并且启动时间有点糟糕)

简单方法

现在最简单的方法就是这样(用于在节点中执行脚本):

lein new mies-node hello-world
cd hello-world
lein cljsbuild once
node run.js

节点cljs有更多模板,mies-node只是其中之一。


艰难的(但后来更直接的方式)

如果你想要艰难的方式,install the clojurescript compiler然后你可以这样做:

$ node -e "$(cljsc hello.cljs '{:target :nodejs :optimizations :whitespace}')"

注意:cljsc需要在路径中

注意:这可能会让你遇到外部问题而不是外部问题。使用传递给编译器的选项

答案 1 :(得分:0)

因为您的问题是:“运行单个clojurescript文件”,然后尝试使Clojurescript编译器自托管:

https://github.com/lazerwalker/clojurescript-in-clojurescript

自述文件说:

./run.js nodecljs.js hello.cljs

如果您想运行Nodejs支持的REPL:

https://github.com/bodil/cljs-noderepl

Clojurescript的“问题”(关注你)是它使用Google Closure库(goog.require东西)管理模块(在Clojurescript术语中称为名称空间)依赖关系,这不是Nodejs的加载方式模块。因此,所有涉及的模块都需要打包到一个javascript文件中(使用任何优化模式::whitespace:simple:advanced)才能在Nodejs中运行。

相关问题