欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

YUI Compressor壓縮JavaScript原理及微優(yōu)化

 更新時(shí)間:2013年01月07日 14:16:40   作者:  
最近寫一個(gè)jQuery插件,在最后完成優(yōu)化時(shí),對(duì)比發(fā)現(xiàn)壓縮后文件比較大,就思考那些是可以被修改和優(yōu)化的,發(fā)現(xiàn)壓縮原理也有很大的空間可以學(xué)習(xí)
最近寫一個(gè)jQuery插件,在最后完成優(yōu)化時(shí),對(duì)比發(fā)現(xiàn)壓縮后文件比較大,就思考那些是可以被修改和優(yōu)化的,發(fā)現(xiàn)壓縮原理也有很大的空間可以學(xué)習(xí),通過這次對(duì)YUI Compressor壓縮JavaScript深有體會(huì),那些是可以被壓縮的,特別是那些不能被壓縮的,都需要很清楚,這樣才能寫出來的插件才能保持文件更小,代碼更精巧,而且優(yōu)化的過程中也會(huì)發(fā)現(xiàn)代碼待改良的地方,對(duì)以后也有很大幫助。隨便在網(wǎng)上找來一篇文章做記錄了。

YUI Compressor 壓縮 JavaScript 的內(nèi)容包括
移除注釋
移除額外的空格
細(xì)微優(yōu)化
標(biāo)識(shí)符替換(Identifier Replacement)

YUI Compressor包括哪些細(xì)微優(yōu)化呢?
object["property"] ,如果屬性名是合法的 JavaScript 標(biāo)識(shí)符(注:合法的 JavaScript 標(biāo)識(shí)符——由一個(gè)字母開頭,其后選擇性地加上一個(gè)或者多個(gè)字母、數(shù)字或下劃線)且不是保留字,將優(yōu)化為: object.property
{"property":123} ,如果屬性名是合法的 JavaScript 標(biāo)識(shí)符且不是保留字,將優(yōu)化為{property:123} (注:在對(duì)象字面量中,如果屬性名是一個(gè)合法的 JavaScript 標(biāo)識(shí)符且不是保留字,并不強(qiáng)制要求用引號(hào)引住屬性名)。
'abcd\'efgh',將優(yōu)化為 "abcd'efgh"。
"abcd" + "efgh",如果是字符串相連接,將優(yōu)化成 "abcdefgh"(注:所有在使用 YUI Compressor 的前提下,對(duì)于腳本中的字符串連接,使用連接符 “+” 的效率和可維護(hù)性最高)。
對(duì)于 JavaScript 最有效的壓縮優(yōu)化,當(dāng)屬標(biāo)識(shí)符替換。
比如:
復(fù)制代碼 代碼如下:

(function(){
function add(num1, num2) {
return num1 + num2;
}
})();

進(jìn)行屬標(biāo)識(shí)符替換后:
復(fù)制代碼 代碼如下:

(function(){
function A(C, B) {
return C+ B;
}
})();

再移除額外的空格,最終成了:
復(fù)制代碼 代碼如下:

(function(){function A(C,B){return C+B;}})();

YUI Compressor 標(biāo)識(shí)符替換僅替換函數(shù)名和變量名,那哪些不能被替代呢?
原始值:字符串、布爾值、數(shù)字、null 和 undefined。一般來說字符串占的空間最多,而非數(shù)字字面量其次(true、false,null,underfinded)。
全局變量:window、document、XMLHttpRequest等等。使用最多的就是 document、window。
屬性名,比如:foo.bar。占據(jù)的空間僅次于字符串,”.” 操作符無法被代替,且 a.b.c 更加費(fèi)空間。
關(guān)鍵字。經(jīng)常被過度使用的關(guān)鍵字有:var、return。最好的優(yōu)化方法:一個(gè)函數(shù)僅出現(xiàn)一次 var 和 return 關(guān)鍵字。
對(duì)于原始值、全局變量、屬性名的優(yōu)化處理方式大致相同:任何字面量值、全局變量或者屬性名被使用超過 2 次(包括2次),都應(yīng)該用局部變量存儲(chǔ)代替。
但有部分情況下是禁止使用標(biāo)識(shí)符替換的:
使用 eval() 函數(shù)。解決方法:不使用或者創(chuàng)建一個(gè)全局函數(shù)封裝 eval()。
使用 with 語句。解決方法:方法同上。
JScript 的條件注釋。唯一解決的方法:不使用。
由于 YUI Compressor 是建立在 rhino interpreter 基礎(chǔ)上的,所以上述所有的優(yōu)化都是安全的。

相關(guān)文章

  • 詳解addEventListener的三個(gè)參數(shù)之useCapture

    詳解addEventListener的三個(gè)參數(shù)之useCapture

    本文主要給大家介紹的是addEventListener的三個(gè)參數(shù)之中的useCapture參數(shù)的使用及示例分享,有需要的小伙伴參考下
    2015-03-03
  • 微信小程序選擇器組件picker簡(jiǎn)單入門

    微信小程序選擇器組件picker簡(jiǎn)單入門

    微信小程序picker表單選擇器的使用,根據(jù)官方介紹的有點(diǎn)不清楚,下面這篇文章主要給大家介紹了關(guān)于微信小程序選擇器組件picker的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 原生js實(shí)現(xiàn)商品篩選功能

    原生js實(shí)現(xiàn)商品篩選功能

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)商品篩選,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JavaScript數(shù)組操作總結(jié)

    JavaScript數(shù)組操作總結(jié)

    JavaScript中的Array對(duì)象與其他編程語言中的數(shù)組一樣,是一組數(shù)據(jù)的集合。在JavaScript中,數(shù)組里面的數(shù)據(jù)可以是不同類型的,并具有用于執(zhí)行數(shù)組常見操作的方法,本文整理了一些常用的,需要的可以參考一下
    2022-10-10
  • JS中位運(yùn)算符的一些妙用

    JS中位運(yùn)算符的一些妙用

    大多數(shù)語言都提供了按位運(yùn)算符,恰當(dāng)?shù)氖褂冒次贿\(yùn)算符有時(shí)候會(huì)取得的很好的效果,下面這篇文章主要給大家介紹了關(guān)于JS中位運(yùn)算符的一些妙用,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 判斷客戶瀏覽器是否支持cookie的示例代碼

    判斷客戶瀏覽器是否支持cookie的示例代碼

    本篇文章主要介紹了判斷客戶瀏覽器是否支持cookie的示例代碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 為body標(biāo)簽和document.body都添加點(diǎn)擊事件后僅Firefox彈出了兩次

    為body標(biāo)簽和document.body都添加點(diǎn)擊事件后僅Firefox彈出了兩次

    為body標(biāo)簽和document.body都添加點(diǎn)擊事件后僅Firefox彈出了兩次,需要的朋友可以參考下。
    2011-04-04
  • 小程序api實(shí)現(xiàn)promise封裝過程解析

    小程序api實(shí)現(xiàn)promise封裝過程解析

    這篇文章主要介紹了小程序api實(shí)現(xiàn)promise封裝過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 實(shí)例解析package.json和最常見的scripts字段

    實(shí)例解析package.json和最常見的scripts字段

    日常開發(fā)中,現(xiàn)在的前端開發(fā)已經(jīng)被三大框架取代,其中最主流的不過vue和react,而開發(fā)這些項(xiàng)目的時(shí)候不得不接觸package.json這個(gè)文件,可你真的了解這個(gè)文件嗎?今天給大家聊聊package.json和最常見的scripts字段,感興趣的朋友一起看看吧
    2023-04-04
  • JavaScript中的Map數(shù)據(jù)結(jié)構(gòu)詳解

    JavaScript中的Map數(shù)據(jù)結(jié)構(gòu)詳解

    這篇文章主要為大家介紹了JavaScript的Map數(shù)據(jù)結(jié)構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評(píng)論