看了《高性能JavaScript》的讀書筆記
幾個原則:
1、將腳本放在底部
<link>還是在head中,用以保證在js加載前,能加載出正常顯示的頁面。
<script>放在</body>前。
2、成組腳本
由于每個<script>標簽下載時阻塞頁面解析過程,所以限制頁面的<script>總數也可以改善性能。適用于內聯腳本和外部腳本。
3、非阻塞腳本
等頁面完成加載后,再加載js代碼。也就是,在window.load事件發出后開始下載代碼。
(1)defer屬性:支持IE4和fierfox3.5更高版本瀏覽器
<script defer>...</script>
內聯和外部文件
帶defer屬性的<script>可出現在文檔的任何位置,對應的js文件將在<script>被解析時啟動下載,但代碼不會執行,直到DOM加載完畢(在onload事件句柄被調用之前)。所以實現了和也賣弄其他資源一起并行下載。
(2)動態腳本元素
文檔對象模型(DOM)允許你使用js動態創建HTML的幾乎全部文檔內容。
script.type="text/javascript";
script.src="file.js";
document.getElementByTagName_r("head")[0].appendChild(script);
(3)The YUI3 approach
理念:用一個很小的初始代碼,下載其余的功能代碼,先引入文件:
使用:
Y.Dom.addclass(...)
})
The LazyLoad library
使用:先引入:lazyload-min.js
(4)
Appliction.init();
})
Application.init();
})
先引入:lab.js
Application.init();
})
他的獨特之處在于能夠管理依賴關系。
可以通過wait()函數指定哪些文件應該等待其他文件。
例如:b.js的代碼保證不在a.js之前運行
Application.init();
})
新聞熱點
疑難解答