有人将jQuery编译为Google新发布的Closure编译器吗?
据报道,代码大小可以大幅减少。如果使用这个编译器编译jQuery,会有什么好处呢?
有人将jQuery编译为Google新发布的Closure编译器吗?
据报道,代码大小可以大幅减少。如果使用这个编译器编译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 编译在一起,最大的好处就是可以使你受益。
关闭高级优化:
开启高级优化后:未经修改无法正常工作。即使已导出所有可找到的内容,也仍然无法完全正常工作。此时代码已增至53466字节(压缩后为18785字节),比未开启高级优化的闭包代码还要大,因此看起来并不是一个成功的方案。
从jQuery 1.4开始,Google的Closure Compiler被用作jQuery发布的默认缩小技术。然而,jQuery只使用了SIMPLE_OPTIMIZATIONS设置。jQuery团队没有计划支持ADVANCED_OPTIMIZATIONS。
出于好奇,我使用YUI和Closure缩小了最新的Prototype和jQuery库,并进行了SlickSpeed测试。 您可以在此运行测试。
正如其他人所指出的那样,使用ADVANCED_OPT编译不起作用,但如果有人愿意做这项工作,我将很乐意将结果添加到SlickSpeed测试中。
闭包只是最小化和重命名变量吗?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
.click
、.each
等,以获得额外的节省。 - Tinister我使用Closure(采用ADVANCED_OPTIMIZATIONS)对托管的单页面网站进行了javascript代码压缩,相比于YUI Compressor,获得了显著的大小节省。因此,我开始尝试缩小该站点的jQuery库,因为它肯定没有使用整个jQuery库。
每次运行jQuery时,编译器都会发出警告,主要指出未使用的代码部分。即使如此,编译后的代码也无法工作。我看到的主要问题是编译器没有正确导出东西。通过将函数附加到窗口对象上,我可以轻松地从自己的代码中导出函数,但我还没有能够在jQuery中做到这一点。
好消息是,John Resig已经开始尝试Closure。我猜想我们很快就会看到兼容性的新版本发布。
jQuery目前还不支持Closure Compiler的高级模式。我同意让它与之兼容是一件非常好的事情,因为它的方法链语法非常适合原型虚拟化,可以大大提高执行速度。
实际上,在流行的JavaScript库中(除了Closure Library),只有Dojo Toolkit与Closure Advanced模式兼容。