[英]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.