是否可以使用闭包编译器ADVANCED_OPTIMIZATIONS与jQuery?

时间:2010-10-25 18:03:51

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

我不断收到给定对象不存在函数(重命名)的错误。是否有发布或设置或某些东西使它工作?

3 个答案:

答案 0 :(得分:11)

在使用带有jQuery的Closure Compiler Advanced Mode时,必须使用externs文件进行jQuery。外部文件将告诉编译器这些是保留方法并接受这些参数和参数数据类型应该是这样的,所以不要缩小方法名称并以这种方式检查参数数据类型。

您可以获取由Google Developers here创建的外部文件。此文件是为jQuery-1.4.3生成的。但目前可能会使用任何版本的jQuery。新添加的方法可能不包含在该文件中,因此您应将其添加到externs文件,语法和同义词非常简单。

此外,您可以使用额外的compier标志将externs文件的位置说给编译器。语法应该是这样的

--compiler_flags= "--externs=path/to/jquery.externs.js"

此外,您可以使用this tool这是Closure Library的在线外部提取器。

答案 1 :(得分:6)

你必须declare jQuery as an extern to the compiler ...但我不确定是否有人制作了there was an extern file for 1.3.2,但我还没有看到任何1.4版本。

编辑: this issue thread here has the community building a 1.4 version

答案 2 :(得分:2)

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