在关闭编译器

时间:2016-05-19 12:08:27

标签: javascript google-closure-compiler

我需要手动减少封闭编译的js文件中的重复单词,因为我不能在编译的js文件中使用gzip。

我看了几个方法来做,例如我想减少“原型”这个词,所以我做的是在每个对象中引用原型然后使用该引用以添加属性和方法对象原型,因此单词原型将仅对每个对象使用一次。但是在某些情况下,闭包编译器似乎无法以这种方式删除未使用的代码,因为它将对象中的方法保留在原型链中或任何对象本身未被任何对象使用。 如果该方法被原型链中的任何对象使用,它看起来无法检测到这种方式,因此它保留了它并使文件大小实际上更大。

我为了减少“原型”这个词而尝试做的另一件事是使用@nocollapse注释,但由于某种原因它破坏了代码,编译后的代码会在我尝试时抛出Uncaught ReferenceError关于未定义的变量和函数使用这个注释,或者它只是扁平化,再次重复。

还有其他方法可以减少重复的单词吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Closure编译器有AliasStrings次传递,这对于不使用gzip的情况有很大帮助。它没有启用也没有通过标志暴露。使用它需要自定义构建的编译器。

https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/CompilerOptions.java#L442