[英]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.