讓javascript飛–聽技術分享會總結

來源:互聯網
上載者:User

  首先,必須熟悉的是雅虎的那一套http://developer.yahoo.com/performance/rules.html英文原版,很詳細,當然也可以去網上so中文版的。

  下面列出在技術分享會上的一些需要注意的點:

  1、引入js最好在文檔的底部,當然也要根據具體情況而定。

  2、合并指令碼,減少HTTP請求數量,我們一般有兩種解決方案:

    ①.在發布之前,就把多個指令碼合并成一個指令碼。

    ②.在請求的時候,src="1.js,2.js……",這樣通過一次http請求,就能載入多個js檔案

  3、無阻塞的指令碼

    ①.defer屬性,但是有相容性的問題,只有IE支援此屬性。

    ②.動態指令碼:loadscript 一般來說,在 HTML 頁面中應該只載入基本的 JS 檔案,以使得頁面能夠儘快地顯示出來,然後在頁面載入完畢之後,利用 onload 事件再載入其它 JS 檔案,動態載入 JS 檔案的方法很簡單,可以用下面的函數來實現:

var loadScript = function(url) {  var script = document.createElement("script");  script.type = "text/javascript";  script.src = url;  document.body.appendChild(script);};

    這樣增加的 script 元素,它的內容不一定是立即下載並執行的。如果我們想知道這個 JS 檔案何時已經下載並執行完畢,然後運行後面的依賴代碼,可以用下面的方法來判斷(下面例子來自《高效能 JavaScript 編程》):

var loadScript = function(url, callback) {  var script = document.createElement("script");  script.type = "text/javascript";  script.src = url;  if (script.readyState) {    script.onreadystatechange = function() {      if (script.readyState == "loaded" || script.readyState == "complete") {         script.onreadystatechange = null;        callback();       }    };  } else {    script.onload = function() { callback(); };   }  document.body.appendChild(script);};

    其中 IE 瀏覽器不支援 script 元素的 onload 事件,因此我們改用 onreadystatechange 事件

    ③.XHR指令碼注入:分離了下載和執行,但不能跨域,意味著不能從CDN下載檔案。

  4、理解範圍鏈、理解閉包,注意IE閉包記憶體流失等。

       http://www.ibm.com/developerworks/web/library/wa-memleak/?S_TACT=105AGX52&S_CMP=cn-a-wa

       http://msdn.microsoft.com/en-us/library/bb250448.aspx

    盡量減少with和eval的使用,try catch也會改變範圍。

  5、訪問DOM需要注意,HTML集合是一個非常昂貴的東西,每一次訪問HTML集合都需要重新計算一次,所以我們在使用html集合的一些屬性的時候,最後把他用變數儲存下來,而不是每次都去訪問。

  6、重繪重排:dom樹、渲染樹。每次頁面配置和幾何屬性改變時都需要重排

    ①.合并dom和樣式的修改

    ②.離線操作dom

    ③.緩衝布局資訊

  7、UI線程

    ①.使用定時器讓出時間片

    ②.web workers,實現多線程,獨立於UI線程,專註於處理資料。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.