国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 14:20:06
字體:
來源:轉載
供稿:網友
最近寫一個jQuery插件,在最后完成優(yōu)化時,對比發(fā)現壓縮后文件比較大,就思考那些是可以被修改和優(yōu)化的,發(fā)現壓縮原理也有很大的空間可以學習,通過這次對YUI Compressor壓縮JavaScript深有體會,那些是可以被壓縮的,特別是那些不能被壓縮的,都需要很清楚,這樣才能寫出來的插件才能保持文件更小,代碼更精巧,而且優(yōu)化的過程中也會發(fā)現代碼待改良的地方,對以后也有很大幫助。隨便在網上找來一篇文章做記錄了。

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

YUI Compressor包括哪些細微優(yōu)化呢?
object["property"] ,如果屬性名是合法的 JavaScript 標識符(注:合法的 JavaScript 標識符——由一個字母開頭,其后選擇性地加上一個或者多個字母、數字或下劃線)且不是保留字,將優(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 標識符替換僅替換函數名和變量名,那哪些不能被替代呢?
原始值:字符串、布爾值、數字、null 和 undefined。一般來說字符串占的空間最多,而非數字字面量其次(true、false,null,underfinded)。
全局變量:window、document、XMLHttpRequest等等。使用最多的就是 document、window。
屬性名,比如:foo.bar。占據的空間僅次于字符串,”.” 操作符無法被代替,且 a.b.c 更加費空間。
關鍵字。經常被過度使用的關鍵字有:var、return。最好的優(yōu)化方法:一個函數僅出現一次 var 和 return 關鍵字。
對于原始值、全局變量、屬性名的優(yōu)化處理方式大致相同:任何字面量值、全局變量或者屬性名被使用超過 2 次(包括2次),都應該用局部變量存儲代替。
但有部分情況下是禁止使用標識符替換的:
使用 eval() 函數。解決方法:不使用或者創(chuàng)建一個全局函數封裝 eval()。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 奉新县| 平顺县| 新干县| 哈巴河县| 揭西县| 兰考县| 贵港市| 鸡西市| 陆丰市| 嘉兴市| 文山县| 华池县| 宜兴市| 晋江市| 乐昌市| 潮州市| 逊克县| 芜湖县| 奇台县| 屏东县| 洛阳市| 普安县| 隆尧县| 南城县| 庆元县| 兖州市| 赤峰市| 林西县| 房产| 深水埗区| 沽源县| 青龙| 莱西市| 章丘市| 漾濞| 桓台县| 太湖县| 仙桃市| 雷波县| 阳朔县| 林甸县|