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

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

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

    隨筆-7  評論-24  文章-102  trackbacks-0

    1、Script的 defer屬性
    2、為body添加腳本
    3、CDATA小節(jié)
    4、null和undefined變量
    5、縮減JavaScript代碼



    1、Script的 defer屬性

         如果將defer屬性設(shè)置為"defer",那么表示該腳本不會生成任何文檔內(nèi)容,于是瀏覽器可以提前處理頁面的剩余部分,在頁面處理結(jié)束并做好顯示準(zhǔn)備時才處理腳本部分。defer屬性可以提高頁面載入的速度,特別是那些引用了大量的JavaScript代碼或者龐大的JavaScript程序庫的頁面。

    <script type="text/javascript" defer="defer"> 
     no content being generated  
    </script> 



    2、為body添加腳本

         前面我們曾經(jīng)說過,因為對script元素進(jìn)行集中管理有利于網(wǎng)頁的可維護(hù)性,所以script元素通常將添加在網(wǎng)頁上的head元素中。然而,在body元素中添加腳本的原因往往是出于性能的考慮。

         因為瀏覽器從同一個域名并發(fā)載入的資源是有限制的,所以,當(dāng)把腳本添加到head元素中時,首先載入的將是腳本,其次才是文檔的剩余部分。此外,瀏覽器可能會延遲頁面剩余部分的顯示,因為腳本中可能會調(diào)用document.write方法修改document對象。如果JavaScript文件很龐大,那么網(wǎng)頁中的圖片以及其他重要的信息將會被延遲顯示,這所帶來的問題遠(yuǎn)比可維護(hù)性更加重要。

         即使在script元素中使用defer屬性也不一定能完全解決該問題,特別是并發(fā)資源訪問和頁面顯示的限制。
     
         在High Performance Web Sites(中譯版《高性能網(wǎng)站建設(shè)指南》一書中,作者推薦將script元素放在文檔的最末尾處,這樣網(wǎng)頁的其他部分就可以優(yōu)先載入。大多數(shù)復(fù)雜網(wǎng)站的開發(fā)人員更傾向于這種方法。這種方法帶來的負(fù)面影響是腳本不容易查找,網(wǎng)頁的可維護(hù)性也較差。
     
         那么什么才是最佳方法呢?我發(fā)現(xiàn)大多數(shù)網(wǎng)站并不引用龐大的JavaScript程序庫,在保證較好性能的前提下,將腳本放在head元素中,也確保網(wǎng)頁可維護(hù)性的優(yōu)勢。不過,如果的確需要使用龐大的JavaScript程序庫,那么可以考慮將腳本放在頁面的最末尾處。 

         不論采用何種方法,請確保腳本位置的一致性,要么全部放在head元素中,要么全部在body元素的最末尾處。

    3、CDATA小節(jié)
     
    <script type="text/javascript">  
    //<![CDATA[   

    function hello() {
       
    var msg = "Hello, <em>World!</em>";
       document.open();
       document.write(msg);
       document.close();
    }

    //]]>
    </script> 

         之所以使用CDATA小節(jié),是因為XHTML處理器在解釋標(biāo)記型語言時會識別出所有的開始標(biāo)簽和結(jié)束標(biāo)簽。
     
         在頁面文件中通過script元素的src屬性引用的JavaScript,是XHTML標(biāo)準(zhǔn)所兼容的,并且不要求使用CDATA小節(jié)。如果是嵌入的JavaScript代碼,那么就需要使用CDATA小節(jié),特別是包含在body元素中的代碼。對于大多數(shù)瀏覽器而言,還需要用JavaScript注釋符(//)來隱藏CDATA小節(jié),如示例1.3所示,否則將會出現(xiàn)JavaScript錯誤。
     
         當(dāng)然,保持頁面整潔的最佳方式是將JavaScript代碼從頁面中徹底移去,改成使用鏈接JavaScript文件的方式。

         在本書的大多數(shù)示例中,JavaScript代碼是直接嵌入在頁面里的,這樣可以提高代碼的可讀性且易于檢查。然而,Mozilla推薦將所有嵌入的JavaScript代碼都從頁面中移去,放在獨立的JavaScript文件中。使用獨立的JavaScript文件,可以避免校驗以及文本解釋錯誤等問題,而不用擔(dān)心頁面是以HTML還是XHTML的方式進(jìn)行處理。

    提示
         使用JavaScript文件往往也能提高網(wǎng)頁載入的效率,因為瀏覽器會在第一次載入文件的時候進(jìn)行緩存,引用相同文件時則會從緩存中獲取。



    4、null和undefined變量

    null變量是已定義的、值為null的變量。以下是一個null變量的示例:
    var nullString = null;

    如果變量已經(jīng)聲明但是還沒有初始化,那么就是undefined變量:
    var undefString;

    如果聲明了變量并且賦予了初始值,那么該變量就不是null或undefined:
    var sValue = ""; 

         當(dāng)你使用JavaScript程序庫時,或者在一些復(fù)雜的代碼中,某些變量有可能還沒有初始化;如果嘗試在表達(dá)式中使用這樣的變量,那么就有可能得到出乎意料的結(jié)果,通常會導(dǎo)致JavaScript錯誤。如果不確定變量的狀態(tài),那么可以在條件表達(dá)式中測試該變量,例如: 
    if (sValue) ...     // 如果變量是null或undefined,那么結(jié)果為true,否則是false 

         在第3章中將詳細(xì)介紹條件語句,現(xiàn)在你只需要知道該表達(dá)式會判斷變量sValue是否已經(jīng)聲明并初始化,如果已聲明并初始化則該表達(dá)式的值為true,否則,該表達(dá)式的值為false。
    if (unknownVariable)     // false,變量沒有聲明或賦值  
    if (undefinedString)     // false,變量沒有賦值  
    if (nullString)           // false,變量已經(jīng)聲明并且賦值,但是所賦的值是null  
    if (sValue)                // true,變量已經(jīng)聲明并且賦值(包括空字符串) 使用null關(guān)鍵字,可以判斷數(shù)值是否為null:

    if (sValue == null) 
         在JavaScript中,即使變量已經(jīng)聲明,但只要還沒有初始化就是undefined變量。如果變量已經(jīng)聲明并初始化,那么變量就不是null或undefined。然而,在該示例中它是一個全局變量,正如之前的章節(jié)所述,沒有以var關(guān)鍵字聲明的變量可能會引起各種各樣的問題。

     

    5、縮減JavaScript代碼

         空格能夠提高代碼的可讀性,但同時也會增加文件的大小。通常情況下,這沒什么影響,因為大多數(shù)JavaScript文件都非常小。然而,對于某些大型Ajax應(yīng)用,或者復(fù)雜的JavaScript程序庫來說,太大的JavaScript文件會影響載入JavaScript的速度。
     
         如果要盡可能壓縮JavaScript文件,那么可以選用一些免費的工具,例如Dean Edward的Packer(http://dean.edwards.name/packer/),它能夠在線壓縮JavaScript代碼。或者使用Wikipedia中"minify"條目(http://en.wikipedia.org/wiki/Minify)中所列舉的工具,這些工具可以在桌面或者服務(wù)器上使用。
     
         另一類工具是用來保護(hù)JavaScript代碼版權(quán)的。這些工具不僅僅會壓縮JavaScript代碼,甚至還會對代碼進(jìn)行加密,從而使代碼難以閱讀。
    posted on 2010-05-24 17:13 黃小二 閱讀(368) 評論(0)  編輯  收藏 所屬分類: Ajax
    主站蜘蛛池模板: 免费视频中文字幕| 1000部啪啪未满十八勿入免费| 免费毛片网站在线观看| 亚洲日本在线播放| 中文字幕免费在线观看| 中文字幕亚洲免费无线观看日本 | 免费在线观看黄网站| 亚洲女子高潮不断爆白浆| 女人让男人免费桶爽30分钟| 亚洲欧美黑人猛交群| 日本免费v片一二三区| 杨幂最新免费特级毛片| 亚洲国产精品自产在线播放| 一级毛片a免费播放王色电影| 亚洲综合精品香蕉久久网| 91视频免费观看| 亚洲国产精品不卡在线电影| 在线观看永久免费| 亚洲自偷自偷在线成人网站传媒 | 亚洲av午夜福利精品一区| 久久免费精彩视频| 亚洲午夜国产精品| 日本媚薬痉挛在线观看免费| 特级av毛片免费观看| 亚洲国产精华液网站w| 曰批全过程免费视频网址| 亚洲精品国产首次亮相| 亚洲人午夜射精精品日韩| 国产一级淫片a免费播放口| 亚洲国产高清在线精品一区| 日韩免费毛片视频| 中文字幕不卡高清免费| 久久精品国产96精品亚洲| 免费人成视频在线| 国产乱妇高清无乱码免费| 亚洲精品成人久久| 国产a级特黄的片子视频免费| 99精品视频在线观看免费| 亚洲国产日韩精品| 亚洲伊人久久精品影院| 国产免费不卡v片在线观看|