最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

進行屬標識符替換后:
復制代碼 代碼如下:

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

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

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

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

相關文章

  • js+html5實現(xiàn)手機九宮格密碼解鎖功能

    js+html5實現(xiàn)手機九宮格密碼解鎖功能

    這篇文章主要為大家詳細介紹了js+html5實現(xiàn)手機九宮格密碼解鎖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • JS中console對象內(nèi)部提供調(diào)試方法示例詳解

    JS中console對象內(nèi)部提供調(diào)試方法示例詳解

    本文介紹了JavaScript中`console`對象提供的多種調(diào)試方法,包括`log`、`debug`、`dir`、`table`、`clear`、`group`、`groupEnd`、`time`和`timeEnd`,每種方法都有其特定的用途,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • 微信小程序使用Echarts和分包的完整步驟

    微信小程序使用Echarts和分包的完整步驟

    這篇文章主要給大家介紹了關于微信小程序使用Echarts和分包的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 基于SpringMVC+Bootstrap+DataTables實現(xiàn)表格服務端分頁、模糊查詢

    基于SpringMVC+Bootstrap+DataTables實現(xiàn)表格服務端分頁、模糊查詢

    這篇文章主要介紹了基于SpringMVC+Bootstrap+DataTables實現(xiàn)表格服務端分頁、模糊查詢的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • js內(nèi)存泄漏場景、如何監(jiān)控及分析詳解

    js內(nèi)存泄漏場景、如何監(jiān)控及分析詳解

    js內(nèi)存泄漏的含義就是當已經(jīng)不需要某塊內(nèi)存時這塊內(nèi)存還存在著,垃圾回收機制就是間歇的不定期的尋找到不再使用的變量,并釋放掉它們所指向的內(nèi)存,這篇文章主要給大家介紹了關于js內(nèi)存泄漏場景、如何監(jiān)控及分析的相關資料,需要的朋友可以參考下
    2021-11-11
  • 微信小程序賬號密碼登入和傳值的實現(xiàn)方法

    微信小程序賬號密碼登入和傳值的實現(xiàn)方法

    傳統(tǒng)的web開發(fā)實現(xiàn)登陸功能,一般的做法是輸入賬號密碼、或者輸入手機號及短信驗證碼進行登錄,下面這篇文章主要給大家介紹了關于微信小程序賬號密碼登入和傳值的實現(xiàn)方法,需要的朋友可以參考下
    2022-04-04
  • 利用js實現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能

    利用js實現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能

    vue數(shù)據(jù)雙向綁定是通過數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式來實現(xiàn)的,下面這篇文章主要給大家介紹了關于如何利用js實現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能的相關資料,需要的朋友可以參考下
    2021-07-07
  • Json格式詳解

    Json格式詳解

    JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。JSON采用完全獨立于語言的文本格式,這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成
    2021-11-11
  • Javascript 遍歷頁面text控件詳解

    Javascript 遍歷頁面text控件詳解

    本篇文章主要是對Javascript遍歷頁面text控件進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • JavaScript計算某一天是星期幾的方法

    JavaScript計算某一天是星期幾的方法

    這篇文章主要介紹了JavaScript計算某一天是星期幾的方法,需要的朋友可以參考下
    2015-08-08

最新評論

大化| 秦皇岛市| 新竹市| 唐河县| 延寿县| 沙湾县| 金门县| 略阳县| 武夷山市| 称多县| 建湖县| 潼关县| 林甸县| 三门县| 芒康县| 屏东市| 河南省| 云安县| 蕉岭县| 庆云县| 襄樊市| 新邵县| 太仓市| 馆陶县| 南江县| 松滋市| 杨浦区| 萝北县| 甘德县| 湖口县| 东乌珠穆沁旗| 舒城县| 浮山县| 区。| 治多县| 昌邑市| 搜索| 沂南县| 桦南县| 长沙市| 高台县|