2017-04-27 99 views
3

我想盡量減少我必須通過電話爲我的個人網站發送的Javascript代碼的大小。是否有任何技巧可以編寫更好的壓縮代碼?我正在考慮分辨率爲 gzip。如何編寫壓縮友好的JavaScript?

我需要使用短變量名?或者,最小化可以找到所有這些實例並縮短它們?或者它很好,因爲gzip會檢測到它們並在電線上壓縮?對於函數,傳遞具有屬性的對象更好嗎?或者只需要爲每個值需要單獨的參數? (我可以想象參數對於最小化是安全的,因爲它們總是本地函數)

我對這些工具做了些什麼的粗略理解,但僅僅對我應該怎麼做還不夠自信寫我的Javascript儘可能小的壓縮。

+1

我認爲minify應該做你想做的事情,因爲如果你看jquery的未分類代碼,你會發現它比它的縮小版本要大得多。 –

+0

對於大多數當前算法,您應該儘量減少代碼中_instructions_的數量,變量名的長度無關緊要。正如A. Lau所說,用於jQuery的縮小器可能是最好的選擇。大多數這些算法都是開源的,所以你可以看看它們究竟做了什麼,並從那裏得出結論。 – Pyromonk

回答

1

如果您使用的是微小的工具,你不需要爲使用短名稱爲您的變量,則minifier將採取照顧。

至於函數參數,從一個微小角度,最好使用單獨的參數,而不是對象的屬性,因爲minifier不能重命名對象的屬性,但將重命名的參數。

我不覺得有資格建議您如何從Gzip的角度寫更多的可壓縮的代碼,但我可以給你寫上更minifiable Javascript代碼一些建議。

我的第一個建議是,你在你的代碼運行你喜歡minifier,然後比較它的漂亮的印版,與原來的代碼。通過這種方式,您將瞭解縮小器對代碼所做的更改。

通常情況下,重命名minifiers變量的函數名,以較短的,但不能重命名對象的屬性。

所以避免這種情況:

foo.bar.baz.A = 1; 
foo.bar.baz.B = 2; 
foo.bar.baz.C = 3; 

,而是,這樣做:

var shortcut = foo.bar.baz; 
shortcut.d = 1; 
shortcut.e = 2; 
shortcut.f = 3; 

一個minifier將重命名shortcut到一個或兩個字母變量。

另一種很好的做法是使用method chaining儘可能地(特別是如果你正在使用JQuery)

例如,避免這種情況:

$div.css('background', 'blue'); // set BG 
$div.height(100);    // set height 
$div.fadeIn(200);    // show element 

而做到這一點,而不是:

$('#my-div') 
    .css('background', 'blue') 
    .height(100) 
    .fadeIn(200);