Javascript 使用jQuery优化高级Google闭包编译器

Javascript 使用jQuery优化高级Google闭包编译器,javascript,jquery,minify,Javascript,Jquery,Minify,我试着用谷歌闭包编译器编译我的JS+jQuery脚本。使用简单的优化选项可以正常工作。但是,当我切换到高级优化时,会出现一些错误 例如,它将jQuery$.ajax()方法更改为$.i()。这简直让浏览器疯了 你知道为什么会发生这种情况吗?高级优化会破坏名称,包括属性访问。为了使用高级优化,您必须专门为此编写代码。在为闭包编译器编写的大量代码的末尾,您将看到如下内容: window['MarkerClusterer'] = MarkerClusterer; MarkerClusterer.pro

我试着用谷歌闭包编译器编译我的JS+jQuery脚本。使用简单的优化选项可以正常工作。但是,当我切换到高级优化时,会出现一些错误

例如,它将jQuery$.ajax()方法更改为$.i()。这简直让浏览器疯了


你知道为什么会发生这种情况吗?

高级优化会破坏名称,包括属性访问。为了使用高级优化,您必须专门为此编写代码。在为闭包编译器编写的大量代码的末尾,您将看到如下内容:

window['MarkerClusterer'] = MarkerClusterer;
MarkerClusterer.prototype['addMarker'] = MarkerClusterer.prototype.addMarker;
MarkerClusterer.prototype['addMarkers'] = MarkerClusterer.prototype.addMarkers;
MarkerClusterer.prototype['clearMarkers'] = MarkerClusterer.prototype.clearMarkers;
或者举个简单的例子

window['myLibraryName'] = myLibrary;
myLibrary['someMethod'] = myLibrary.someMethod;
原因是编译器显然不会损坏字符串文本,现在可以通过
myLibrary
对象正确导出这些名称


因此,除非jQuery(或任何其他库)是专门为更好地使用该功能而编写的,否则不能使用高级优化。这是一个经常针对闭包编译器的批评。OTOH,这是谷歌为他们自己写的东西,为他们自己的代码库写的,很好地免费提供给我们,所以…

你说的“让浏览器疯狂”是什么意思?你观察到了什么?当它是关于闭包编译器的时候,为什么要用uglifyjs标记它?