我可以为您翻译:是否可以在不使用Google Closure库的情况下编译ClojureScript?

9

我是Clojure和ClojureScript的忠实粉丝,通常情况下我更愿意在我的项目中使用ClojureScript而不是其他替代品。但有一件事情有时会让我望而却步,特别是在小型项目中,就是在生成的JavaScript中包含Google Closure库所增加的大约80kb的代码,即使我在我的代码中没有使用这些API。

是否有一种编译ClojureScript的方法可以避免这个额外的负担呢?


7
患者:“医生,我呼吸有问题。” 医生:“不要呼吸,你就会好的”。;) - Ankur
2个回答

12

这个额外的大小并不是来自于Google Closure库 --- 如果您开启了高级优化,Closure编译器将从最终的JavaScript中移除您没有使用的任何Closure库代码。相反,JavaScript看起来很大,因为其中包含了整个Clojure运行时,实现了像惰性序列、promises和其他所有东西一样的功能。


正如我在另一条评论中提到的,这是正确的答案,而不是另一个。 - yazzapps.com
我明白了,我没有意识到所有的JavaScript都是ClojureScript运行时本身。谢谢。 - Dane

6

更正:正如Zubair指出的那样,下面的步骤禁用了Google Closure优化,但并未从最终JavaScript中消除Google Closure代码。您应该选择高级优化以消除未使用的JavaScript,就像其他答案建议的那样。


ClojureScript: Up and Running中,作者解释了如何禁用Google Closure步骤:

使用project.clj中的:optimizations值为:none,Google Closure编译器将根本不会被调用,构建将直接编写ClojureScript编译器生成的JavaScript。这种模式对于开发和调试非常有用。但是,JavaScript输出将分成许多单独的文件,在浏览器中需要稍微不同的处理方式[...]。

请注意,这可能会减少所生成JavaScript的大小,因为Google Closure会执行大量工作以剥离您的代码未明确调用的任何内容。最好尝试使用各种:optimizations值(:none:whitespace:simple:advanced),并查看每种情况下生成的JavaScript的大小。


1
这个答案是错误的。问题是如何排除Google Closure Library,它是Google Closure的UI库。这个答案解释了如何不对你的代码运行Closure Compiler。 - yazzapps.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接