<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    道非道 非常道

    勤思、謹(jǐn)言、慎行、厚積、薄發(fā)

    統(tǒng)計(jì)

    web

    天圓

    經(jīng)濟(jì) 政治 軍事

    鍵康

    js 代碼壓縮

    JS 代碼壓縮,基本原理為:
       1.壓縮多余的空格和換行符。
       2.刪除注釋,因?yàn)樽⑨屩粚?duì)程序員有用而對(duì)于瀏覽網(wǎng)頁(yè)的最終用戶是無(wú)用的,刪除可以減少文件體積。
       3.把較長(zhǎng)的變量名稱和過程名稱統(tǒng)一替換為很短的名稱,一者可以減少體積,二者還可以減少程序的可讀性,保護(hù)代碼產(chǎn)權(quán).

    JS 的速度分為兩種,下載速度和執(zhí)行速度。要想JS的下載速度快,就需要盡量減少js文件的大小,另外,把多個(gè)js文件合并成一個(gè)也能因?yàn)闇p少服務(wù)器的響應(yīng)次數(shù)而加快網(wǎng)頁(yè)下載。



    YUI Compressor 壓縮 JavaScript 的內(nèi)容包括:

    1. 移除注釋
    2. 移除額外的空格
    3. 細(xì)微優(yōu)化
    4. 標(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í)符替換。

    比如:

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

    進(jìn)行屬標(biāo)識(shí)符替換后:

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

    再移除額外的空格,最終成了:

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

    YUI Compressor 標(biāo)識(shí)符替換僅替換函數(shù)名和變量名,那哪些不能被替代呢?

    1. 原始值:字符串、布爾值、數(shù)字、null 和 undefined。一般來(lái)說字符串占的空間最多,而非數(shù)字字面量其次(true、false,null,underfinded)。
    2. 全局變量:window、document、XMLHttpRequest等等。使用最多的就是 document、window。
    3. 屬性名,比如:foo.bar。占據(jù)的空間僅次于字符串,”.” 操作符無(wú)法被代替,且 a.b.c 更加費(fèi)空間。
    4. 關(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í)符替換的:

    1. 使用 eval() 函數(shù)。解決方法:不使用或者創(chuàng)建一個(gè)全局函數(shù)封裝 eval()。
    2. 使用 with 語(yǔ)句。解決方法:方法同上。
    3. JScript 的條件注釋。唯一解決的方法:不使用。

    posted on 2009-08-25 17:49 星期五 閱讀(660) 評(píng)論(0)  編輯  收藏 所屬分類: web 2.0

    主站蜘蛛池模板: 国产男女猛烈无遮挡免费视频网站| 久久精品国产亚洲Aⅴ香蕉 | 国产精品成人亚洲| 亚洲Av无码乱码在线znlu| a级在线免费观看| 亚洲天堂2017无码中文| 亚洲国产精品综合久久网络| 久久久久久久99精品免费观看| 激情五月亚洲色图| 亚洲色成人中文字幕网站 | 久久亚洲精品中文字幕无码| AV片在线观看免费| 91成人免费观看在线观看| 亚洲精品国产日韩| 亚洲精品无码久久久久去q| 手机在线看永久av片免费| 国产成人精品免费视频大全| 亚洲国产品综合人成综合网站| 亚洲一区二区三区无码影院| 国产精彩免费视频| a级毛片无码免费真人久久| 亚洲欧美日韩中文高清www777| 国产亚洲婷婷香蕉久久精品 | 亚洲乱码中文字幕小综合| JLZZJLZZ亚洲乱熟无码| 免费人成视频在线| 免费黄色电影在线观看| 羞羞视频免费网站含羞草| 亚洲成人动漫在线观看| 亚洲精品自在在线观看| 国产男女猛烈无遮挡免费视频| aⅴ免费在线观看| 最新久久免费视频| 草久免费在线观看网站| 亚洲日韩精品无码AV海量| 久久久无码精品亚洲日韩京东传媒| 亚洲综合伊人久久大杳蕉| 亚洲高清无码专区视频| 麻豆精品国产免费观看| 成人AV免费网址在线观看| 69免费视频大片|