YUI Compressor 是公认的最佳最小化工具,但 Closure 似乎还可以更好。

有帮助吗?

解决方案

“无论你找到最适合你”我认为是目前最普遍的回答 - YUI已经可以不再那么无疑将是其目前作为最好的工具的共识之一。而封闭是新的美国 - 所以不是用封丰富经验,因为不存在与YUI。因此,我不认为你会发现根据人的经验为什么要使用闭合一个引人注目的真实世界的论点它只是因为它是新的。

这并不是说你不应该使用封闭....只是我的周围说,我不认为有直至多的人使用了2相比它们提供给这个答案。方式

编辑: 有几个比较早的,说关闭时并提出改进: http://blog.feedly.com/2009/ 11月6日/谷歌闭合-VS-锐分钟/ 结果 http://news.ycombinator.com/item?id=924426

此外编辑: 值得关注的问题清单上的关闭: http://code.google.com / p /闭合编译器/问题/列表

其他提示

这是我见过的比较,关闭似乎是在尽量减少文件大小方面明显的赢家。本文采用三种流行的JS库(jQuery的,原型,MooTools的),以YUI压缩机和关闭编译器之间的对比压缩: HTTP:// WWW .bloggingdeveloper.com /后/闭合编译器VS-YUI-压缩机 - 比较最Javascript的压缩 - Tools.aspx

封闭出来,在前面在每个试验中,特别是在它的先进模式,其中它“最小化比锐压缩机更多的代码大小约20-25%通过提供近60%的压缩。”

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

您可以尝试在谷歌的互动关闭编译网站这些和其他的例子。

好像 jQuery 1.5 刚刚搬到 UglifyJS:

此外,使用此开关,我们已移动到使用Google Closure编译器的UGLIFYJS。使用时,我们已经看到了一些可靠的文件大小改进,因此我们对开关感到非常满意。

我认为这取决于你的代码。如果你想自己编译的代码,那么我认为这是值得的修补代码,以便它与作品的关闭编译的(有些东西似乎在一开始有点别扭)。我相信的关闭编译的马上就会对这种工作的首选,它也会让你收拾你的代码位,并保持一贯的风格(当然这取决于你的喜好,你可能讨厌一些份,我做的:P)

如果你依赖于其他库,然后在我看来,你应该稍等一下,直到他们发布的关闭编译的兼容版本。它不应该花太多的时间最流行的库在那里。也许你可以为你自己使用那些“不那么活跃”库提供的修补程序。

我在谈论的高级编辑的此模式下,简单的编译的一些已经指出的模式是相当安全的。

这是一个不同的观点 - 谷歌关闭?我没有留下深刻印象。这也许有点过于苛刻,但好读。我想只有时间会告诉哪个更好=)

截至 2012 年 10 月,YUI 压缩器似乎已被弃用,或者至少不再在 YUI 中使用: http://www.yuiblog.com/blog/2012/10/16/state-of-yui-compressor/

您可以在这里做一些测试,看看是什么在每个浏览器更好: http://jsperf.com/closure-vs-yui

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top