我使用闭包编译器压缩js应用程序,该应用程序使用jQuery UI,但无法正常工作。
我的操作步骤如下:
- 前往此处加载jqueryui js文件
- 要求外部化jQuery.ui
- 将结果复制到文件中并将其用作外部文件
然而,应用程序出现故障。对话框不再正确显示。爆炸效果不能正常工作,还有几个对话框被创建。有趣的是,jQuery UI 本身在某种程度上可以工作,因为对话框已经被创建。只是应用程序表现不当。
我漏掉了什么吗?
我使用闭包编译器压缩js应用程序,该应用程序使用jQuery UI,但无法正常工作。
我的操作步骤如下:
然而,应用程序出现故障。对话框不再正确显示。爆炸效果不能正常工作,还有几个对话框被创建。有趣的是,jQuery UI 本身在某种程度上可以工作,因为对话框已经被创建。只是应用程序表现不当。
我漏掉了什么吗?
链接的外部提取器似乎无法从jQuery样式文件中提取外部。这很可能是因为jQuery使用“extend”方法来分配对象,而该工具无法识别这些属性也需要作为外部。
要解决此问题,您需要将扩展调用解开为直接赋值:
jQuery.extend(jQuery.ui, { prop1: function() {}, prop2: function() {});
将变成
jQuery.ui = jQuery.ui || {};
jQuery.ui.prop1 = function() {};
jQuery.ui.prop2 = function() {};
另外,在处理jQuery并使用高级优化时,应完全避免使用 "$" 别名。
这只是使用Closure编译器高级优化编译jQuery代码具有挑战性的多个原因之一。