我应该使用YUI Compressor还是新的Google Closure编译器来压缩我的JavaScript?

时间:2009-11-06 09:23:09

标签: javascript yui-compressor google-closure google-closure-compiler

YUI Compressor是最小化的最佳工具,但Closure似乎可能更好。

7 个答案:

答案 0 :(得分:27)

“无论你最适合自己”,我认为目前的答案是一般性的 - YUI已经有了更长的时间,所以毫无疑问,目前已经达成共识的是最好的工具。虽然Closure对我们来说是新的 - 因此没有像YUI那样丰富的Closure经验。因此,我不认为你会发现一个令人信服的真实世界论据,说明为什么使用Closure基于人们的经验而仅仅因为它是新的。

这并不是说你不应该使用Closure ......就我的说法而言,我认为没有一个答案,直到很多人使用了2并对它们进行了比较。 / p>

编辑: 有几个早期的比较,说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

答案 1 :(得分:14)

从我看到的比较中,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%。”

答案 2 :(得分:10)

关闭可以在简单模式或高级模式下使用。对于大多数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"}

您可以在Google的互动Closure Compiler site中试用这些和其他示例。

答案 3 :(得分:7)

看起来jQuery 1.5刚刚移至UglifyJS

  

此外,我们还有这个开关   转而使用了UglifyJS   谷歌闭包编译器。我们见过   一些可靠的文件大小改进   在使用它的同时我们非常高兴   用开关。

答案 4 :(得分:5)

我认为这取决于你的代码。如果你想编译自己的代码,那么我认为修补代码是值得的,以便它可以与 Closure Compiler 一起使用(有些事情在开始时可能看起来有些尴尬)。我相信 Closure Compiler 很快就会成为这类工作的首选,它也会让你整理你的代码并保持一致的风格(当然这取决于你的偏好,你可能会讨厌一些部分,我这样做:P)。

如果您依赖其他库,那么在我看来,您应该等待一段时间,直到它们发布 Closure Compiler 兼容版本。大多数受欢迎的图书馆都不应该花费太多时间。也许你可以为你自己使用的那些“不那么活跃”的库提供修复。

我在这里谈论高级编译模式,简单编译模式正如一些人所指出的那样使用它是相当安全的。

这是一个不同的意见 - Google Closure ? I'm Not Impressed。它可能有点过于苛刻,但读起来不错。我想只有时间会告诉哪一个更好=)

答案 5 :(得分:2)

截至2012年10月,看起来YUI压缩器现已弃用,或者至少不再用于YUI:http://www.yuiblog.com/blog/2012/10/16/state-of-yui-compressor/

答案 6 :(得分:1)

您可以在此处进行一些测试,并查看每个浏览器中哪些更好: http://jsperf.com/closure-vs-yui