gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:48 25 4
gpt4 key购买 nike

我很难理解这是如何完成的。它如何在不编写任何 JS 的情况下将其转换为 JS(一切都在 Clojure 或 CS 中)。

有人可以举一个简单的例子来说明编译器如何将一些简单的东西转换成 javascript。也许 (def x "foo") 或 (defn [x] (+ x x))?

最佳答案

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

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

分析器比编译器更复杂。对于您的 (def x "foo") 示例,它将生成一个相当简单的 map ,该 map 将由 emit:def 方法处理> 编译器的多种方法;搜索 defmethod emit :def。需要注意的是对 munge 的调用(将 ClojureScript 标识符转换为有效的 JavaScript 标识符;例如 foo-bar -> foo_bar)和 emitsinit 作为参数之一调用,其中 init 的表示将递归生成。 (在这种情况下,它只是 "foo"。)

关于java - ClojureScript 编译器如何将 cljs 转换为 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com