【问题标题】:Can I compile ClojureScript without the Google Closure lib?我可以在没有 Google Closure 库的情况下编译 ClojureScript 吗?
【发布时间】:2013-04-15 03:39:44
【问题描述】:

我是 Clojure 和 ClojureScript 的忠实粉丝,我通常更喜欢在我的项目中使用 ClojureScript 而不是其他替代品,但有时会阻止我使用它的一件事,尤其是在较小的项目中,是 ~80kb通过在生成的 javascript 中包含 Google Closure 库添加,即使我没有在我的代码中使用 api。

有没有什么方法可以编译 ClojureScript 来避免这种额外的重量?

【问题讨论】:

  • @ColeJohnson:患者:“医生,我在呼吸时有问题”。医生:“不要呼吸,你会没事的”。 ;)

标签: clojure clojurescript


【解决方案1】:

额外的大小并非来自 Google Closure 库——如果您启用了高级优化,Closure 编译器将从最终的 JavaScript 中删除您未使用的任何 Closure 库代码。 相反,JavaScript 看起来很大,因为那里有一个完整的 Clojure 运行时在其中实现诸如惰性序列、promise 和其他所有内容。

【讨论】:

  • 正如我在其他评论中提到的,这是正确答案,而不是另一个。
  • 我明白了,我没有意识到 javascript 就是 ClojureScript 运行时本身。谢谢。
【解决方案2】:

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


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

:optimizations 值为:none [in project.clj] 时,Google 闭包编译器 根本不会被调用,并且构建将写出 由 ClojureScript 编译器直接生成的 JavaScript。这种模式 对开发和调试很有用。然而,JavaScript 输出将被拆分到许多单独的文件中,需要稍微 浏览器中的不同处理 [...]

请注意,这可能会或可能不会减少生成的 JavaScript 的大小,因为 Google Closure 做了相当多的工作来去除您的代码未专门调用的任何内容。可能值得玩转 :optimizations 的各种值(:none:whitespace:simple:advanced),看看每种情况下生成的 JavaScript 有多大。

【讨论】:

  • 谢谢,我试试看。
  • 这个答案是错误的。该问题询问如何排除 Google Closure Library,它是用于 google 关闭的 UI 库。这个答案说明了如何不在你的代码上运行闭包编译器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
相关资源
最近更新 更多