成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript加載執(zhí)行方法總結(jié)

Coding01 / 1901人閱讀

摘要:區(qū)別在于執(zhí)行時機(jī),是加載完成后自動執(zhí)行,,而需要等待頁面完成后執(zhí)行。一旦新的元素被添加到文檔,代碼將會被執(zhí)行。這樣的好處是,可以下載但不是立即執(zhí)行代碼,還有一個好處是兼容性好。最好無論文件是以什么樣的方式加載的。

Javascript在瀏覽器性能中,這可能是所有開發(fā)者比較關(guān)注的問題,因為Javascript有阻塞的特征,也就是當(dāng)Javascript運(yùn)行的時候,瀏覽器不會處理其他的任務(wù)。但是瀏覽器不可能只運(yùn)行一個任務(wù),但是同一時間又只能執(zhí)行單個任務(wù)。

不管Javascript代碼是內(nèi)聯(lián)的還是包含在一個外部文件中的,頁面的下載和解析就必須等待腳本完成,才能繼續(xù)向下執(zhí)行,這樣的原因是因為腳本的執(zhí)行可能會重新渲染頁面UI。我們典型的腳本函數(shù)是這樣的。如:

 

   Script Example 


    

當(dāng)瀏覽器遇到一個

這是Javascript文件引入的例子。
但是這樣的寫法理論上是沒有任何問題的,但是這里就存在了性能和體驗的問題。上面的代碼加載了3個外部文件,每個文件在加載的過程中阻塞了頁面的解析,瀏覽器只有等待它們下載并運(yùn)行了Javascript代碼之后,頁面才能繼續(xù),這我們在上面已經(jīng)提到過了。最致命的問題就是,把Javascript文件放在頂部,在加載Javascript文件比較慢的時候會出現(xiàn)空白頁,以至于用戶看不到頁面,更不要說交互網(wǎng)頁,推薦的辦法就是,把所有的Javascript文件,包括外鏈的文件擋在標(biāo)簽底部位置,減少對整個頁面加載的影響。這里就不列出例子了。

2、延遲腳本

這個時候就 ## 標(biāo)題文字 ##

如果瀏覽器不支持defer屬性,上面的代碼的運(yùn)行順序是: 延遲-》當(dāng)前-》加載完成。如果瀏覽器支持defer屬性,那么運(yùn)行順序是:當(dāng)前-》延遲-》加載完成。應(yīng)該很直觀的就能看出區(qū)別。目前defer標(biāo)簽?zāi)壳耙驯凰兄髁鳛g覽器支持

另外這不能不提的還有一個屬性:async。用于加載異步腳本,async和defer的相同點(diǎn)是采用并行下載,在下載的過程中都是不會產(chǎn)生阻塞。區(qū)別在于執(zhí)行時機(jī),async是加載完成后自動執(zhí)行,,而defer需要等待頁面完成后執(zhí)行。

3、動態(tài)腳本元素

DOM允許使用Javascript動態(tài)創(chuàng)建HTML支持的全部內(nèi)容。如:

var script = document.createElement ("script");
script.type = "text/javascript";
script.src = "file1.js"; document.getElementsByTagName_r("head")[0].appendChild(script);

上面新的

LazyLoad也可以同時下載多個Javascript文件,并保證它們在所有瀏覽器上都能以正確的順序遠(yuǎn)行,要加載多個Javascript文件,只需要在執(zhí)行LazyLoad()函數(shù)時傳遞一個數(shù)組即可,如:



當(dāng)然還有其他類庫,比如 LABjs 這里就不一一介紹了。

總結(jié)

將所有的

閱讀需要支付1元查看
<