为什么Google的Closure Compiler会留下一些不必要的空格或换行符?

时间:2010-06-10 20:05:36

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

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

例如(注意换行符,其中每一行似乎都是不必要的):

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

到目前为止,我刚刚手动删除它们,但我很好奇他们为什么会在那里。是否限制代码托管版本的行长度使其更具可读性? 编译器是否足够聪明,可以有意留下或插入那些以最大化GZIP压缩工作?

我知道它们对文件大小有微不足道的影响,但是在缩小源脚本中的每个最后一个字节的过程中付出了很多努力,这与他们在那里的原因相反。

1 个答案:

答案 0 :(得分:38)

引用Closure Compiler FAQ

  

为什么编译脚本中会出现随机换行符?

     

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

你知道它很聪明! :)