相對與HTML,CSS,javascript是最影響瀏覽器性能的,因為瀏覽器在遇到<script>標簽時,必須等待js代碼下載和執行完畢后再執行后面的內容,因此當頁面中js文件過多時,網站訪問速度明顯下降。然而,現在的web應用用到js只會越來越多,那么我們如何有效組織js代碼來提高網站的性能呢?通過相關資料,我總結了以下需要注意的幾點。
1、將script標簽置於網頁底部,一般置於<body/>標簽之前。這樣用戶不必等待js加載並執行完成后就可以完整的瀏覽整個網頁。
2、將多個js文件合並到一個url中加載,以減少http請求。對於此點,可閱讀 http://dancewithnet.com/2010/06/08/minify-js-and-css-files-in-server/
3、通過js動態創建<script>標簽動態加載js文件,以達到無阻賽的加載腳本,可以寫一個函數來做這個工作
1 function loadScript(url,callback){ 2 var script=document.createElement("script"); 3 script.type="text/javascript"; 4 if(script.readyState){ 5 //ie 瀏覽器 6 script.onreadystatechange=function(){ 7 if(script.readyState=="loaded" || script.readyState=="complete"){ 8 script.onreadystatechange=null; 9 callback(); 10 } 11 } 12 }else{ 13 script.onload=function(){ 14 callback(); 15 } 16 } 17 script.src=url; 18 document.getElementByTagName("head")[0].appendChild(script); 19 }
以上這種方式是一種跨瀏覽器的非常易用的方法,也可以通過XMLHttpRequest腳本注入的方式,但此方式有跨域的限制,所以推薦上面的方式。
互聯網上有很多這樣的js庫,供我們下載使用:
Lazyload類庫,下載地址:http://github.com/rgrove/lazyload/
使用方法

1 <script type="text/javascript" src="lazyload-min.js"></script> 2 <script type="text/javascript"> 3 LazyLoad.js("test.js",function(){ 4 Application.init(); 5 }) 6 </script>
同時加載多個文件

<script type="text/javascript" src="lazyload-min.js"></script> <script type="text/javascript"> LazyLoad.js(["test1.js","test2.js","test3.js"],function(){ Application.init(); }) </script>
LABjs類庫下載地址:http://labjs.com
使用方法
<script type="text/javascript" src="lab.js"></script> <script type="text/javascript"> $LAB.script("test.js").wait(function(){ Application.init(); }); </script> //加載多個 <script type="text/javascript"> $LAB.script("test1.js").script("test2.js").wait(function(){ Application.init(); }); </script>
LAB的好處是可以靈活的處理是否加載。

<script type="text/javascript" src="lab.js"></script> <script type="text/javascript"> $LAB.script("test1.js").script("test2.js").wait().script("test3.js").wait(function(){ Application.init(); }); </script>
這樣就可以讓test1.js和test2.js加載執行完成后再加載執行test3.js。