5

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

4

3 回答 3

13

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

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

您也可以使用额外的编译器标志向编译器说明 externs 文件的位置。语法应该是这样的

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

您也可以使用此工具,它是 Closure Library 的在线外部提取器。

于 2012-05-20T12:31:02.480 回答
7

您必须将jQuery 声明为编译器的 extern ...但是我不确定是否有人制作了一个,有一个 1.3.2 的 extern 文件,但我还没有看到任何 1.4+ 版本。

编辑: 这里的这个问题线程有社区建立一个 1.4 版本

于 2010-10-25T18:07:17.000 回答
3

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:10:24.230 回答