我是Clojure和ClojureScript的忠实粉丝,我通常更喜欢使用ClojureScript而不是其他替代方案来进行我的项目,但是有时让我不再使用它,特别是在较小的项目中,有一件事是~80kb通过在生成的javascript中包含Google Closure库来添加,即使我在代码中没有使用apis。
有没有办法编译ClojureScript以避免这种额外的重量?
答案 0 :(得分:11)
额外的大小不是来自Google Closure库 - 如果您启用了高级优化,Closure编译器将删除您在最终JavaScript中未使用的任何Closure库代码。 相反,JavaScript似乎很大,因为在那里有一个完整的Clojure运行时实现了懒惰的seqs,promises等等。
答案 1 :(得分:6)
更正:正如Zubair指出的那样,下面的步骤会禁用Google Closure优化,但不会从最终的JavaScript中删除Google Closure代码。您应该选择高级优化来消除未使用的JavaScript,如其他答案所示。
在ClojureScript: Up and Running中,作者解释了如何禁用Google Closure步骤:
:optimizations
值:none
[在[{1}}]中,Google Closure编译器 根本不会被调用,构建将写出来 由ClojureScript编译器直接生成的JavaScript。这种模式 对于开发和调试很有用。但是,JavaScript 输出将分成许多单独的文件,需要稍微 浏览器中的不同处理[...]
请注意,这可能会或可能不会减少生成的JavaScript的大小,因为Google Closure会做一些工作来删除您的代码没有专门调用的任何内容。可能值得使用project.clj
(:optimizations
,:none
,:whitespace
和:simple
)的各种值,并了解每个值在每个值中的大小情况下。