Ada*_*Dev 27

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

这并不是说你不应该使用Closure ....只是我的回答说,我不认为有一个答案可用,直到许多人使用2并比较它们.

编辑:有几个比较早的,说关闭时并提出改进: http://blog.feedly.com/2009/11/06/google-closure-vs-yui-min/
HTTP://news.ycombinator .COM /项目?ID = 924426

进一步编辑:值得关注Closure的问题列表:http://code.google.com/p/closure-compiler/issues/list


Mic*_*ael 14

从我看到的比较中,Closure似乎是最小化文件大小的明显赢家.本文使用三个流行的JS库(jQuery,Prototype,MooTools)来比较YUI Compressor和Closure Compiler之间的压缩:http: //www.bloggingdeveloper.com/post/Closure-Compiler-vs-YUI-Compressor-Comparing-the- Javascript的压缩,Tools.aspx

Closure在每次测试中都排在前面,特别是在高级模式下,它通过提供近60%的压缩来"最小化代码大小比YUI Compressor大20-25%."


mck*_*oss 10

闭包可以在简单模式或高级模式下使用.对于大多数JavaScript代码,简单模式是相当安全的,因为它只重命名函数中的局部变量以进一步压缩.

高级模式更具侵略性.如果它可以确定它们返回没有副作用的简单值,它将重命名对象文字中的键和内联函数调用.

例如:

function Foo()
{
  return "hello";
}

alert(Foo());
Run Code Online (Sandbox Code Playgroud)

被翻译成:

alert("hello");
Run Code Online (Sandbox Code Playgroud)

这段代码:

var o = {First: "Mike", Last: "Koss"};
alert(o);
Run Code Online (Sandbox Code Playgroud)

被翻译成:

alert({a:"Mike",b:"Koss"});
Run Code Online (Sandbox Code Playgroud)

您可以通过引用如下名称来阻止高级模式更改对象文字中的键值:

{'First': "Mike", 'Last': "Koss"}
Run Code Online (Sandbox Code Playgroud)

您可以在Google的交互式Closure Compiler网站上试用这些和其他示例.


Kev*_*son 7

看起来jQuery 1.5刚刚转移到UglifyJS:

此外,通过此切换,我们已经开始使用Google Closure Compiler中的UglifyJS.我们在使用它时看到了一些可靠的文件大小改进,所以我们对交换机非常满意.

  • 我在Makefile中的https://github.com/jquery/jquery/blob/master/Makefile中看到`COMPILER = $ {JS_ENGINE} $ {BUILD_DIR} /uglify.js --unsafe` (3认同)

Mai*_*ori 5

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

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

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

这是一个不同的意见 - 谷歌关闭?我没有留下深刻的印象.它可能有点过于苛刻,但读起来不错.我想只有时间会告诉哪一个更好=)