25

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

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

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

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

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

4

1 回答 1

40

引用闭包编译器常见问题解答

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

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

你知道这很聪明!:)

于 2010-06-10T23:43:47.557 回答