有没有人针对 Google 新发布的Closure编译器编译 jQuery ?
据报道,代码大小大大节省。我很好奇如果用它编译 jQuery 会有什么好处。
有没有人针对 Google 新发布的Closure编译器编译 jQuery ?
据报道,代码大小大大节省。我很好奇如果用它编译 jQuery 会有什么好处。
John Resig 在尝试编译每晚的 jQuery 1.4 时报告了递归函数的错误,因此需要解决一些问题。如果不确保它通过 jQuery 测试平台,我不会使用用 Closure Compiler 编译的 jQuery。
http://code.google.com/p/closure-compiler/issues/detail?id=1&can=1#c2
我试过 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 个警告,我没有测试它是否仍然有效
闭包编译器消除了您实际不使用的任何代码。典型的网页将只使用一小部分 jQuery 函数,因此最大的好处将来自与完整版 jQuery 一起编译您的代码。
关闭 ADVANCED_OPTIMIZATIONS:
打开 ADVANCED_OPTIMIZATIONS 后:未经修改无法正常工作。打开 ADVANCED_OPTIMIZATIONS 并且我可以找到导出的所有内容......它仍然无法正常工作,并且代码已经再次达到 53466 字节(和 18785 gzipped,这比没有 ADVANCED_OPTIMIZATIONS 的 gzipped 封闭代码更多)所以这看起来不像是一个成功的提议。
从 jQuery 1.4 开始,Google 的 Closure Compiler 被用作 jQuery 版本的默认缩小技术。然而,jQuery 只使用 SIMPLE_OPTIMIZATIONS 设置。jQuery 团队没有计划支持 ADVANCED_OPTIMIZATIONS。
出于好奇,我对最新的 Prototype 和 jQuery 库进行了 SlickSpeed 测试,使用 YUI 和 Closure 进行了缩小。您可以在此处运行测试。
正如其他人所指出的,使用 ADVANCED_OPT 编译不起作用,但如果有人想做这项工作,我很乐意将结果添加到 SlickSpeed 测试中。
我试过他们的在线编译器,效果很好。
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
我使用 Closure(带有 ADVANCED_OPTIMIZATIONS)来压缩我托管的单页站点的 javascript 代码,并发现与 YUI Compressor 相比显着节省了大小。所以我也开始研究为那个站点缩小 jQuery,因为它肯定不使用 entier jQuery 库。
每次我通过编译器运行 jQuery 时都会收到警告,主要是指出未使用的代码部分。即使这样,编译后的代码也不起作用。我看到的主要问题是编译器没有正确导出内容。通过将函数附加到窗口对象,我能够轻松地从我自己的代码中导出函数,但是我还不能使用 jQuery 做到这一点。
好消息是 John Resig 已经在尝试使用 Closure。我怀疑我们会在不久的将来看到两者兼容的新版本。
jQuery 与高级模式下的 Closure Compiler 不兼容(目前)。我同意让它兼容是一件非常好的事情,因为它的方法链语法非常容易用于原型虚拟化,从而大大提高了执行速度。
事实上,在流行的 JavaScript 库中(即 Closure 库除外),只有 Dojo Toolkit 兼容 Closure Advanced 模式。