在clojure中,我可以使用lein-exec
插件lein
来执行"执行"单个clojure文件作为这样的脚本:
lein exec foo.clj
当然,我也很好奇是否有类似的方式来运行" node.js
上的单个clojurescript文件直接没有编译和运行.js文件的过程(可能在终端中)?
谢谢!
答案 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中运行。