ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の読み込みのベスト プラクティス_JavaScript のヒント
相信很多与页面打过交道的同学都对 Yahoo 的 Best Practices for Speeding Up Your Web Site 不陌生。而这 35 条最佳实践中,对 Javascript 的加载顺序的要求是:Put Scripts at the Bottom。因为根据 HTTP/1.1 specification 看来,在同一时间加载两个文件是最理想的,而 Javascript 脚本会阻碍平行下载。Steve 说那是 2008 – 2009 那个时代用的。现在,加载 Javascript 已经有了革命性的化变。
在开讲之前,有一个必须解决的问题是:为什么我们要把 JS 文件放在
之前的最底部。根本原因是,它不能平行下载。而其实并不是所有浏览器都不支持。现在大部分浏览器都支持 Script 的平行下载,除了老掉牙的 IE6&7、Firefox 2&3.0、 Safari 3、Chrome 1。但我们最熟悉的老掉牙同学 IE6 (或以IE为核的那些壳)还是中国(甚至世界上)市场上占用率最高的浏览器,因此我们需要一个折衷的方案。
我们有6种方法可以实现平行(NON-Blocking)下载:
eval()
执行 responseText.。
src
指向脚本URL.
defer
属性
document.write
Script Tag – 利用 document.write
把 <script src="">
添加到 HTML 中。但这个只对 IE 有效。 兼容性可看下图:
Technique | Parallel Downloads | Differ | Existing Scripts | Busy Indicators | Ensures Order | Size (bytes) |
---|---|---|---|---|---|---|
XHR Eval | IE, FF, Saf, Chr, Op | no | no | Saf, Chr | - | ~500 |
XHR Injection | IE, FF, Saf, Chr, Op | no | yes | Saf, Chr | - | ~500 |
Script in Iframe | IE, FF, Saf, Chr, Op | no | no | IE, FF, Saf, Chr | - | ~50 |
Script DOM Element | IE, FF, Saf, Chr, Op | yes | yes | FF, Saf, Chr | FF, Op | ~200 |
Script Defer | IE, Saf4, Chr2, FF3.1 | yes | yes | IE, FF, Saf, Chr, Op | IE, FF, Saf, Chr, Op | ~50 |
document.write Script Tag | IE, Saf4, Chr2, Op | yes | yes | IE, FF, Saf, Chr, Op | IE, FF, Saf, Chr, Op | ~100 |
どのソリューションを使用する必要がありますか?それはすべてあなた自身のニーズ次第です。この図は、いつどの方法を使用するかを示しています:
全体的には、Script DOM Element の方が優れたソリューションです。 NCZ のブログでは、現在最高のテクノロジーは次のとおりであると述べています:
<script>
のように、ページ本文 ( の前の ) に最初のファイルが導入されます。
2 番目の 创建第二个 <script>
<script>
を作成して、2 番目の Javascript ファイルとその他の初期化コードをダウンロードする関数を実行します。 上記のテクノロジーに基づいています。 NCZ では、2 番目のファイルを動的にロードするために、最初のファイルには対応するコードのみを含めることをお勧めします。
loadScript("http://your.cdn.com/second.js", function(){
コードをコピー
コードをコピー