【问题标题】:Why does Google's Closure Compiler leave a few unnecessary spaces or line breaks?为什么 Google 的 Closure Compiler 会留下一些不必要的空格或换行符?
【发布时间】:2010-06-10 20:05:36
【问题描述】:

我注意到每次我使用Google's Closure Compiler Service 时,都会在页面右侧显示的已编译代码中留下一些不必要的空格。这些对应于已编译代码的托管版本中的换行符。

例如(注意换行符,每一个似乎都没有必要):

http://troy.onespot.com/static/stack_overflow/closure_spaces.js

迄今为止,我只是手动删除它们,但我很好奇它们为什么会在那里。是否限制托管版本代码的行长以使其更具可读性? 编译器是否足够聪明,可以故意留下或插入那些以最大限度地发挥 GZIP 压缩效果?

我知道它们对文件大小的影响微乎其微,但是在缩小源脚本中的每个最后一个字节方面付出了如此多的努力,为什么它们会存在是违反直觉的。

【问题讨论】:

  • 我无法访问该default.js,该链接返回一个“内容长度”为 0 的页面。您可以在问题中粘贴(部分)代码吗?
  • 对此感到抱歉 - 我认为 Google 会无限期地托管编译后的代码,但显然他们没有。我更新了上述问题中的链接。
  • 最疯狂的是Google PageSpeed Insights抱怨几个字节(

标签: javascript google-closure google-closure-compiler minify


【解决方案1】:

引用Closure Compiler FAQ

为什么编译的脚本中有随机的换行符?

闭包编译器有意每 500 个字符左右添加换行符。防火墙和代理有时会损坏或忽略行很长的大型 JavaScript 文件。每 500 个字符添加换行符可防止此问题。删除换行符对脚本的语义没有影响。对代码大小的影响很小,并且编译器优化了换行符的位置,因此在压缩文件时代码大小损失更小。

你知道这很聪明! :)

【讨论】:

  • 太棒了,解决了!我没有看到常见问题解答 - 感谢您提供链接,我很感激您的回答。
  • 最疯狂的是Google PageSpeed Insights抱怨几个字节(
  • @JoseNobile 我最近遇到了 Java 应用程序的这个换行问题。我解决了这个问题,bt 删除了闭包编译器引入的手动换行符。
  • 虽然防火墙或代理可能会忽略或损坏行长的文件,但您可以找到许多包含冗长行的缩小的 js 和 css 文件,并且一切看起来都是文件。例如,Bootstrap 4.5.3 的缩小 css 包含 7 行,第 6 行包含大约 160k 个字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多