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

问题描述 投票:0回答:3

我不断收到错误消息,指出给定对象不存在该函数(重命名)。是否有发布或设置或其他东西可以使其工作?

javascript jquery google-closure-compiler google-closure
3个回答
13
投票

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

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

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

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

您还可以使用这个工具,它是闭包库的在线外部提取器。


7
投票

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

编辑: 这里的这个问题线程让社区构建了 1.4 版本


3
投票

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

事实上,在流行的 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

© www.soinside.com 2019 - 2024. All rights reserved.