YUI Compressor被公认为最好的代码最小化工具,但Closure似乎更好。
YUI Compressor被公认为最好的代码最小化工具,但Closure似乎更好。
"Whichever you find best for you"这个答案目前普遍适用 - YUI已经存在更长的时间,因此毫无疑问它是当前拥有最佳工具共识的。Closure对我们来说是新的,因此与YUI相比,Closure没有那么丰富的经验。因此,我认为你不会发现有什么令人信服的真实世界的论据去使用Closure,仅因为它是新的。
这并不是说你不应该使用Closure...只是我的拐弯抹角地说,我认为在一些人使用这两个工具并进行比较之前,还没有可以回答这个问题的答案。
编辑:
有一些早期的比较,称Closure确实提供了改进:
http://blog.feedly.com/2009/11/06/google-closure-vs-yui-min/
http://news.ycombinator.com/item?id=924426
进一步编辑: 值得关注Closure的问题列表:http://code.google.com/p/closure-compiler/issues/list
根据我看到的比较,Closure 在最小化文件大小方面似乎是明显的赢家。该文章使用了三个流行的 JS 库(jQuery、Prototype、MooTools)来比较 YUI Compressor 和 Closure Compiler 之间的压缩: http://www.bloggingdeveloper.com/post/Closure-Compiler-vs-YUI-Compressor-Comparing-the-Javascript-Compression-Tools.aspx
Closure 在每个测试中都排名第一,特别是在其高级模式下,它通过提供近60%的压缩率,比YUI Compressor 能将代码大小最小化的程度提高了约20-25%。
闭包可以用于简单模式或高级模式。简单模式对大多数JavaScript代码来说相当安全,因为它只会重新命名函数中的局部变量以实现更进一步的压缩。
高级模式则更加激进。它将重命名对象字面量中的键,并且如果能够确定它们返回没有副作用的简单值,则内联函数调用。
例如:
function Foo()
{
return "hello";
}
alert(Foo());
被翻译为:
alert("hello");
而这段代码:
var o = {First: "Mike", Last: "Koss"};
alert(o);
被翻译为:
alert({a:"Mike",b:"Koss"});
您可以通过对名称加上引号,防止高级模式更改对象字面量中的键值:
{'First': "Mike", 'Last': "Koss"}
你可以在谷歌的交互式Closure Compiler网站上尝试这些和其他示例。看起来jQuery 1.5刚刚转移到了UglifyJS:
此外,随着这个转换,我们已经从Google Closure Compiler切换到使用UglifyJS。我们发现在使用它时文件大小有了明显的改善,所以我们对这个转换非常满意。
COMPILER = ${JS_ENGINE} ${BUILD_DIR}/uglify.js --unsafe
。 - Kevin Hakansoneval()
吗? - rxgx