我想压缩我的 2000 多行 javascript 并且我已经测试了http://dean.edwards.name/packer/和http://closure-compiler.appspot.com/home。
但在这两种情况下,压缩脚本都会给我错误。错误的一个例子是jQuery(document).Da is not a function
。
为什么我的脚本在优化后不起作用?我可以做些什么来优化/压缩我的脚本?
我想压缩我的 2000 多行 javascript 并且我已经测试了http://dean.edwards.name/packer/和http://closure-compiler.appspot.com/home。
但在这两种情况下,压缩脚本都会给我错误。错误的一个例子是jQuery(document).Da is not a function
。
为什么我的脚本在优化后不起作用?我可以做些什么来优化/压缩我的脚本?
确保每个 JavaScript 文件的开头都有一个分号。奇怪,我知道,但原因如下:
您可能在一个文件中有这样的内容:
function someFunc() {
...
}
接下来是下一个文件中的类似内容(这是 jQuery 插件的外观):
(function($) {
...
})(jQuery);
这被压缩成这样:
function someFunc(){ }( function($){...} )(jQuery);
这本质上是调用someFunc
withfunction($){...}
作为它的论点。然后,它将接受返回的任何内容,并假设它是一个函数并将其jQuery
作为参数调用。
这就是为什么大多数 jQuery 插件都以;(function($){
.
在每个文件的开头(或结尾,但要保持一致)放置一个分号将使您的脚本看起来像:
;function someFunc(){ }; (function($){...})(jQuery);
这样,您的脚本将按预期进行解释。
你可以试试在线 YUI Compressor。这是谷歌上的第一个结果:http ://www.refresh-sf.com/yui/
我有同样的问题。每次我想缩小我的 javascript 文件(包括一些 jquery 插件)时,我都会遇到错误。首先,我试图解决附加分号的问题,正如 nicholaides 在他的上一篇文章中所解释的那样。即使有他的建议,我也无法在没有错误的情况下缩小我的 js 文件。之后,我在每个 jquery-plugin 中更改了以下行并为我工作;例如:
(function($) {
$.fn.defaultInputs = function(settings) { ...
我已经简化为
jQuery.fn.defaultInputs = function(settings) { ...