5

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

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

为什么我的脚本在优化后不起作用?我可以做些什么来优化/压缩我的脚本?

4

3 回答 3

6

确保每个 JavaScript 文件的开头都有一个分号。奇怪,我知道,但原因如下:

您可能在一个文件中有这样的内容:

function someFunc() {
   ...
}

接下来是下一个文件中的类似内容(这是 jQuery 插件的外观):

(function($) {
   ...
})(jQuery);

这被压缩成这样:

function someFunc(){ }( function($){...} )(jQuery);

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

这就是为什么大多数 jQuery 插件都以;(function($){.

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

;function someFunc(){ }; (function($){...})(jQuery);

这样,您的脚本将按预期进行解释。

于 2009-11-17T03:04:41.627 回答
3

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

于 2009-11-17T02:54:14.397 回答
0

我有同样的问题。每次我想缩小我的 javascript 文件(包括一些 jquery 插件)时,我都会遇到错误。首先,我试图解决附加分号的问题,正如 nicholaides 在他的上一篇文章中所解释的那样。即使有他的建议,我也无法在没有错误的情况下缩小我的 js 文件。之后,我在每个 jquery-plugin 中更改了以下行并为我工作;例如:

(function($) {
$.fn.defaultInputs = function(settings) { ...

我已经简化为

jQuery.fn.defaultInputs = function(settings) { ...
于 2010-09-15T20:02:20.287 回答