使用Google Closure Compiler编译的jQuery

时间:2009-11-07 03:18:48

标签: javascript jquery minify google-closure google-closure-compiler

是否有人针对Google新发布的Closure编译器编译了jQuery?

据报道,代码大小可以节省大量资金。我很好奇如果用它编译jQuery会带来什么好处。

10 个答案:

答案 0 :(得分:26)

John Resig在尝试编译每晚jQuery 1.4时报告了一个关于递归函数的错误,所以有一些问题需要解决。我不会使用使用Closure Compiler编译的jQuery而不确保它通过jQuery测试平台。

http://code.google.com/p/closure-compiler/issues/detail?id=1&can=1#c2

答案 1 :(得分:11)

我尝试使用jQuery jQuery 1.3.2

jQuery-1.3.2.min.js     57254 Bytes
jQuery closure compiler 49730 Bytes
-----------------------------------
Reduced by               7524 Bytes
Saved 13.31% off the original size
Saved 10.87% off the gzipped size

获得~7KB

但它也报告了15个警告,我没有测试它是否仍然有效

答案 2 :(得分:7)

闭包编译器会删除您实际不使用的任何代码。典型的网页只使用一小部分jQuery函数,因此最大的好处将来自编译代码和完整版本的jQuery。

答案 3 :(得分:6)

关闭ADVANCED_OPTIMIZATIONS:

  • jquery-1.3.2.min.js:57254 bytes
  • jquery-1.3.2.closure.js 55346 bytes(-3.4%)
  • jquery-1.3.2.min.js.gz:19680 bytes
  • jquery-1.3.2.closure.js.gz:18666 bytes(-5.2%)

启用ADVANCED_OPTIMIZATIONS:它无法正常工作。启用了ADVANCED_OPTIMIZATIONS并且我可以找到导出导出的所有内容...它仍然不能正常工作,并且代码已经达到53466字节(并且18785 gzipped,这比更多 gzipped关闭代码没有ADVANCED_OPTIMIZATIONS)所以它看起来不像一个成功的命题。

答案 4 :(得分:5)

从jQuery 1.4开始,Google的Closure Compiler被用作jQuery版本的默认缩小技术。但是,jQuery仅使用SIMPLE_OPTIMIZATIONS设置。 jQuery团队有no plans to support ADVANCED_OPTIMIZATIONS

答案 5 :(得分:2)

出于好奇,我把最新Prototype和jQuery库的SlickSpeed测试放在一起,用YUI和Closure缩小。 You can run the tests here

正如其他人所说,使用ADVANCED_OPT进行编译不起作用,但如果有人想做这项工作,我很乐意将结果添加到SlickSpeed测试中。

答案 6 :(得分:1)

Closure不会最小化并重命名变量吗? jQuery已经有了.min版本。再次关闭缩小可能是最小的帮助和潜在的危险。

编辑:我刚刚做到了。

Compilation was a success!

Original Size:  55.91KB (19.28KB gzipped)
Compiled Size:  54.05KB (18.28KB gzipped)
Saved 3.34% off the original size (5.18% off the gzipped size)

这是已经开采的版本之上。这里有一个演示:http://closure-compiler.appspot.com/home

答案 7 :(得分:1)

我使用Closure(使用ADVANCED_OPTIMIZATIONS)来压缩我托管的单页网站的javascript代码,并且比YUI Compressor节省了大量资金。所以我开始考虑缩小该网站的jQuery,因为它肯定不会使用相关的jQuery库。

每次我通过编译器运行jQuery时都会收到警告,主要是指出未使用的部分代码。即使如此,编译后的代码也不起作用。我看到的主要问题是编译器没有正确导出内容。通过将它们附加到窗口对象,我能够轻松地从我自己的代码中导出函数,但是我还没有用jQuery做到这一点。

好消息是John Resig已经在试验Closure。我怀疑我们会在不久的将来看到两者兼容的新版本。

答案 8 :(得分:0)

我尝试使用他们的online compiler,效果很好。

答案 9 :(得分:-1)

jQuery与高级模式下的Closure Compiler不兼容。我同意将它兼容是一件非常好的事情,因为它的方法链语法很容易为虚拟化原型提供更高的执行速度。

事实上,在流行的JavaScript库(Closure Library除外)中,只有Dojo Toolkit与Closure Advanced模式兼容。

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t