繁体   English   中英

ClojureScript编译器如何将cljs转换为Javascript

[英]How does the ClojureScript compiler transform cljs to Javascript

看到这是怎么回事,我有点困难。 如何在不编写任何JS的情况下将其转换为JS(一切都在Clojure或CS中)。

有人可以给出一个简单的例子,说明编译器如何将简单的东西转换为javascript。 也许(def x“foo”)或(defn [x](+ xx))?

发送JavaScript由cljs.compiler命名空间处理。 (链接指向主分支上的源。)正如您所看到的,它归结为将字符串打印到文件。

当然,哪些字符串完全取决于ClojureScript源,但不是直接的:原始源首先转换为在编译过程中更有用的不同表示。 这发生在cljs.analyzer命名空间中。

分析器比编译器更复杂。 对于你的(def x "foo")例子,它会产生一个相当简单的映射,它将由编译器的emit :def方法的:def方法处理; 搜索defmethod emit :def 要注意的事情是将呼叫munge (转化ClojureScript标识符成有效的JavaScript标识符;例如foo-bar - > foo_bar )和emits与调用init作为一个参数,其中的表示init将被递归地生成。 (在这种情况下,它只是"foo" 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM