亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Coding01 / 1948人閱讀

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

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

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

 

   Script Example 


    

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

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

2、延遲腳本

這個(gè)時(shí)候就 ## 標(biāo)題文字 ##

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

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

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

DOM允許使用Javascript動(dòng)態(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也可以同時(shí)下載多個(gè)Javascript文件,并保證它們在所有瀏覽器上都能以正確的順序遠(yuǎn)行,要加載多個(gè)Javascript文件,只需要在執(zhí)行LazyLoad()函數(shù)時(shí)傳遞一個(gè)數(shù)組即可,如:



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

總結(jié)

將所有的

閱讀需要支付1元查看
<