39

有没有人针对 Google 新发布的Closure编译器编译 jQuery ?

据报道,代码大小大大节省。我很好奇如果用它编译 jQuery 会有什么好处。

4

10 回答 10

27

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

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

于 2009-11-07T22:50:15.097 回答
12

我试过 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 个警告,我没有测试它是否仍然有效

于 2009-11-07T03:29:55.410 回答
7

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

于 2009-12-02T22:53:49.110 回答
6

关闭 ADVANCED_OPTIMIZATIONS:

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

打开 ADVANCED_OPTIMIZATIONS 后:未经修改无法正常工作。打开 ADVANCED_OPTIMIZATIONS 并且我可以找到导出的所有内容......它仍然无法正常工作,并且代码已经再次达到 53466 字节(和 18785 gzipped,这没有 ADVANCED_OPTIMIZATIONS 的 gzipped 封闭代码更多)所以这看起来不像是一个成功的提议。

于 2009-11-07T04:21:31.900 回答
5

从 jQuery 1.4 开始,Google 的 Closure Compiler 被用作 jQuery 版本的默认缩小技术。然而,jQuery 只使用 SIMPLE_OPTIMIZATIONS 设置。jQuery 团队没有计划支持 ADVANCED_OPTIMIZATIONS

于 2010-12-01T15:01:40.283 回答
2

出于好奇,我对最新的 Prototype 和 jQuery 库进行了 SlickSpeed 测试,使用 YUI 和 Closure 进行了缩小。您可以在此处运行测试

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

于 2009-11-10T06:38:18.213 回答
1

我试过他们的在线编译器,效果很好。

于 2009-11-19T09:19:38.853 回答
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

于 2009-11-07T03:26:22.780 回答
1

我使用 Closure(带有 ADVANCED_OPTIMIZATIONS)来压缩我托管的单页站点的 javascript 代码,并发现与 YUI Compressor 相比显着节省了大小。所以我也开始研究为那个站点缩小 jQuery,因为它肯定不使用 entier jQuery 库。

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

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

于 2009-12-07T17:03:04.280 回答
-1

jQuery 与高级模式下的 Closure Compiler 不兼容(目前)。我同意让它兼容是一件非常好的事情,因为它的方法链语法非常容易用于原型虚拟化,从而大大提高了执行速度。

事实上,在流行的 JavaScript 库中(即 Closure 库除外),只有 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

于 2011-03-10T13:13:58.173 回答