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

首頁 > 開發 > CSS > 正文

YUI Compressor壓縮JavaScript的內容

2024-07-11 08:22:21
字體:
來源:轉載
供稿:網友

yui compressor 壓縮 javascript 的內容包括:

  1. 移除注釋
  2. 移除額外的空格
  3. 細微優化
  4. 標識符替換(identifier replacement)

yui compressor 包括哪些細微優化呢?

  • object["property"] ,如果屬性名是合法的 javascript 標識符(注:合法的 javascript 標識符——由一個字母開頭,其后選擇性地加上一個或者多個字母、數字或下劃線)且不是保留字,將優化為: object.property
  • {"property":123} ,如果屬性名是合法的 javascript 標識符且不是保留字,將優化為 {property:123} (注:在對象字面量中,如果屬性名是一個合法的 javascript 標識符且不是保留字,并不強制要求用引號引住屬性名)。
  • 'abcd/'efgh',將優化為 "abcd'efgh"。
  • "abcd" + "efgh",如果是字符串相連接,將優化成 "abcdefgh"(注:所有在使用 yui compressor 的前提下,對于腳本中的字符串連接,使用連接符 “+” 的效率和可維護性最高)。

對于 javascript 最有效的壓縮優化,當屬標識符替換。

比如:

(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 標識符替換僅替換函數名和變量名,那哪些不能被替代呢?

  1. 原始值:字符串、布爾值、數字、null 和 undefined。一般來說字符串占的空間最多,而非數字字面量其次(true、false,null,underfinded)。
  2. 全局變量:window、document、xmlhttprequest等等。使用最多的就是 document、window。
  3. 屬性名,比如:foo.bar。占據的空間僅次于字符串,”.” 操作符無法被代替,且 a.b.c 更加費空間。
  4. 關鍵字。經常被過度使用的關鍵字有:var、return。最好的優化方法:一個函數僅出現一次 var 和 return 關鍵字。

對于原始值、全局變量、屬性名的優化處理方式大致相同:任何字面量值、全局變量或者屬性名被使用超過 2 次(包括2次),都應該用局部變量存儲代替。

但有部分情況下是禁止使用標識符替換的:

  1. 使用 eval() 函數。解決方法:不使用或者創建一個全局函數封裝 eval()。
  2. 使用 with 語句。解決方法:方法同上。
  3. jscript 的條件注釋。唯一解決的方法:不使用。

由于 yui compressor 是建立在 rhino interpreter 基礎上的,所以上述所有的優化都是安全的。

擴展閱讀:
《extreme javascript compression with yui compressor》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新乐市| 天峻县| 黔南| 大名县| 罗源县| 浙江省| 涟源市| 门头沟区| 孟州市| 霞浦县| 克什克腾旗| 徐州市| 横山县| 襄汾县| 荥阳市| 陕西省| 明水县| 平江县| 赣榆县| 富平县| 顺义区| 西林县| 中牟县| 越西县| 平阳县| 清镇市| 郁南县| 花莲县| 永定县| 松阳县| 卢湾区| 通化市| 北宁市| 大洼县| 贵南县| 阳城县| 全州县| 陇南市| 遂昌县| 濮阳县| 胶州市|