感觉这东西怎么用都是一点点问作者问出来的, 连文档都没好好写… https://github.com/anmonteiro/lumo
虽然博客是写了点, 但是太敷衍了 https://anmonteiro.com/2016/11/the-fastest-clojure-repl-in-the-world/
跟 Planck 没得比… 我大致写点:
用法
Lumo 是打包了一个 V8 的 self-hosted ClojureScript 解释器, 当然内部是先编译再解释的. 因为打包了一个 V8, 所以安装挺费事的. 可以通过 npm 安装 lumo-cljs
也可以用 Brew 或者其他操作系统或者发行版的包管理工具装.
安装后, 直接运行 lumo 可以启动 REPL, 其实也对应一个 -r
的参数:
=>> lumo
Lumo 1.2.0
ClojureScript 1.9.482
Docs: (doc function-name-here)
Exit: Control+D or :cljs/quit or exit
cljs.user=>
运行脚本可以用 -i
参数:
=>> lumo -i tasks/render.cljs
参数
具体的参数有很多, 可以列一下常用的几个:
-
lumo -c src/ -i a.cljs
当中-c
表示 classpath, 可以用 Bash 语法指定静态的 classpath -
lumo -K -c src/ -i a.cljs
其中-K
表示开启缓存, 默认的位置是.lumo_cache/
, classpath 中的文件的编译结果会被缓存 -
lumo -Kv -c src/ -i a.cljs
当中-v
是 verbose -
lumo -n 6000 -r
其中-n
表示启动一个 REPL Server -
lumo -h
可以查看具体所有参数
性能
V8 跟 Planck 用的 JavaScriptCore 比起来似乎还要慢一点, 一般在缓存正常使用的情况下还能接受, 不然依赖多点编译花个一分钟也不奇怪. 另外缓存目前没有处理, 需要手动设置过期.
其他
Lumo 用了 V8 所以可以直接跑 Node.js 模块, 直接用 js/require
引用 npm 模块… 不过坏处是的 V8 是内置的, 不能用来 debug. Node.js 有个 node --inspect
的调试功能, 用不了.
最新的 Lumo 1.2 可以用来编译 ClojureScript 到 js 了, 无 JVM. 然而遇到大项目直接 bug, 郁闷死我了.