【发布时间】:2013-04-06 07:19:29
【问题描述】:
http://closure-compiler.appspot.com/home
(function(){
var somevar = 'somevar';
this.each(function(){
var minify_var = {
method1: somevar + '1',
method2: somevar + '2',
method3: somevar + '3',
method4: somevar + '4',
method5: somevar + '5'
};
alert(minify_var);
});
})();
这样的代码被缩小为:
(function(){this.each(function(){alert({method1:"somevar1",method2:"somevar2",method3:"somevar3",method4:"somevar4",method5:"somevar5"})})})();
长度(+11 个符号)肯定大于:
(function(){var a="somevar";this.each(function(){alert({method1:a+"1",method2:a+"2",method3:a+"3",method4:a+"4",method5:a+"5"})})})();
问题是,我们有两个变量,但得到了一个。
其实对于小脚本来说还不错,但是对于大脚本来说可能会受到伤害。
添加了第一个变量以使缩小的代码更小,但 google 忽略了它。
它也忽略了大多数类似的其他尺寸优化技巧。
可以修复吗?
这个问题是关于 Google Closure,而不是 JavaScript 模式。
【问题讨论】:
-
我猜 Closure 是为遵循更好实践的代码而设计的。您可能应该编写可读的代码并让它缩小它。
-
@dystroy 这不是一个更好的做法,似乎它只是合并了只读变量
-
嗯,这简化了代码并避免了无用的运行时计算,这看起来很聪明。过早缩小是万恶之源……
标签: javascript jquery minify google-closure