簡體   English   中英

壓縮腳本時,JavaScript停止工作

[英]JavaScript stops working when I compress my script

我想壓縮我的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);

這本質上是使用function($){...}調用someFunc作為它的參數。 然后,它將獲取返回的任何內容,並假設它是一個函數並使用jQuery作為參數調用它。

這就是為什么大多數jQuery插件都以;(function($){

在每個文件的開頭(或結束,但使其一致)放置分號將使您的腳本看起來像:

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

這樣,您的腳本將被解釋為預期。

您可以嘗試在線YUI Compressor。 這是谷歌的第一個結果: http//www.refresh-sf.com/yui/

我有同樣的問題。 每次我想縮小我的javascript文件,包括一些jquery-plugins我得到一個錯誤。 首先,我試圖解決附加分號的問題,因為nicholaides在他的上一篇文章中解釋過。 即使有他的建議,我也無法設法縮小我的js文件而不會出錯。 之后我在每個jquery-plugin中更改了以下行並為我工作; 例如:

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

我簡化為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM