压缩脚本时,JavaScript停止工作

Ste*_*ven 5 javascript optimization jscompress

我想压缩我的2000多行javascript,并测试了http://dean.edwards.name/packer/http://closure-compiler.appspot.com/home.

但在这两种情况下,压缩脚本都会给我带来错误.错误的一个例子是jQuery(document).Da is not a function.

为什么我的脚本在优化后不起作用?我该怎么做才能优化/压缩我的脚本?

nic*_*des 6

确保每个JavaScript文件的开头都有分号.奇怪,我知道,但这就是原因:

你可能在一个文件中有这样的东西:

function someFunc() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在下一个文件中跟着这样的东西(这是多少jQuery插件看起来):

(function($) {
   ...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

这被压缩成这个:

function someFunc(){ }( function($){...} )(jQuery);
Run Code Online (Sandbox Code Playgroud)

这本质someFuncfunction($){...}是基于它的论点.然后,它将接受返回的任何内容,并假设它是一个函数并将其jQuery作为参数调用.

这就是大多数jQuery插件开始的原因;(function($){.

在每个文件的开头(或结束,但使其一致)放置分号将使您的脚本看起来像:

;function someFunc(){ }; (function($){...})(jQuery);
Run Code Online (Sandbox Code Playgroud)

这样,您的脚本将被解释为预期.


Jos*_*rce 3

您可以尝试在线 YUI 压缩机。这是谷歌上的第一个结果: http: //www.refresh-sf.com/yui/