Javascript 使用Google闭包编译器编译jQuery

Javascript 使用Google闭包编译器编译jQuery,javascript,jquery,minify,google-closure,google-closure-compiler,Javascript,Jquery,Minify,Google Closure,Google Closure Compiler,有人用谷歌新发布的编译器编译jQuery吗 据报道,在代码大小方面有巨大的节省。我很好奇,如果jQuery是用它编译的,它的好处是什么。闭包不就是最小化和重命名变量吗?jQuery已经有一个.min版本。再次使用闭包缩小可能只会带来极小的帮助和潜在的危险 编辑:我刚刚做到了 Compilation was a success! Original Size: 55.91KB (19.28KB gzipped) Compiled Size: 54.05KB (18.28KB gzipped)

有人用谷歌新发布的编译器编译jQuery吗


据报道,在代码大小方面有巨大的节省。我很好奇,如果jQuery是用它编译的,它的好处是什么。

闭包不就是最小化和重命名变量吗?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)

这是在已经挖掘的版本之上。这里有一个演示:

我尝试使用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-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%)

打开高级_优化:未经修改就无法工作。随着高级_优化的开启,以及我能找到的所有可导出的内容。。。它仍然不能很好地工作,代码已经达到了53466字节(并且18785个Gzip,这比没有高级优化的Gzip closured代码还要多),因此看起来它不是一个成功的建议。

John Resig在试图编译jQuery 1.4的夜间版本时报告了递归函数的一个bug,所以有几个问题需要解决。如果不确保jQuery通过jQuery测试平台,我不会使用使用闭包编译器编译的jQuery


出于好奇,我对最新的原型和jQuery libs进行了一次SlickSpeed测试,使用YUI和Close进行了收缩


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

我用他们的方法尝试过,效果很好。

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

我使用Closure(带有高级优化)来压缩我托管的单个页面站点的javascript代码,并发现与YUI压缩器相比,大大节省了大小。所以我也开始研究缩小该站点的jQuery,因为它肯定不使用EntierjQuery库

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


好消息是John Resig已经在尝试闭包。我怀疑在不久的将来,我们会看到这两个版本都兼容的新版本

从jQuery 1.4开始,Google的闭包编译器被用作jQuery发行版的默认缩小技术。但是,jQuery只使用简单的优化设置。jQuery团队有。

jQuery在高级模式下与闭包编译器不兼容。我同意让它兼容是一件非常好的事情,因为它的方法链接语法非常容易地支持原型虚拟化,从而大大提高了执行速度

事实上,在流行的JavaScript库(即闭包库除外)中,只有Dojo工具包与闭包高级模式兼容


是的,JQuery已经使用了缩小器。我刚刚读了一篇关于原型是如何使用闭包而不是YUI压缩机重新编译的文章。原型的封闭版本比YUI压缩机生产的小60%。这是一个非常小的功能,用于加速web应用程序。理论上,您可以将JavaScript与jQuery混合使用,并让闭包重命名所有的
。单击
。每个
都可以节省额外的成本。@Tinister,您会怎么做呢。闭包不需要解析HTML页面以查看调用的内容和未调用的内容吗?您不需要在HTML页面中放置任何JS。闭包编译器不仅仅是最小化和重命名。如果你编译一个大的JS程序,你会看到它是一个重新编译。它将把代码内联到有意义的地方。它将重新组织复杂的条件等。但是,当然,您会失去将jQuery代码缓存在用户计算机上的任何好处(如果是)。实际上,上次我检查Closure时,并没有从jQuery中删除未使用的函数,我想这是因为它们实际上没有定义为单独的函数。如果是这样,如果只编译jQuery库,闭包编译器不会删除几乎所有的代码吗?这是目的。是的,但是高级闭包编译器现在还远远不够完美。请指出,现在jQuery 1.4已经发布,bug已经解决了,闭包编译器现在是jQuery的主要缩略器:)请注意:调用闭包编译器相当简单。除此之外,它是一个优化编译器,通过静态分析删除死代码并提供有用的编译时警告。ADVANCED_OPTIMIZATIONS标志不优化文件大小,而是优化执行速度(它试图更改代码以使其运行更快,而不是下载更快)。@Kekoa,从我的阅读和了解到,似乎文件大小(和下载速度)是高级_优化和编译器的主要目标。较小的文件大小通常(但并非总是)会导致更快的代码。死代码删除和内联有两个目的。如果调用太多,内联并不总是减少文件大小。过时:“但是,我们相信我们可以做得更好,并且希望为任何用户提供自动方法,以创建一个最佳最小化的文件,其中包括应用程序代码和所需的内容