今天是來高博學(xué)習(xí)的第29天降盹。
今天研究了下JS,視頻課程中談到了這倆屬性。
腳本引用中的async 和defer谤辜。
是的,就是在頁面腳本引用的時候設(shè)置defer或者async价捧,為什么會有這兩個屬相來輔助腳本加載那丑念,因為瀏覽器在遇到script標(biāo)簽的時候,文檔的解析會停止结蟋,不再構(gòu)建document脯倚,有時打開一個網(wǎng)頁上會出現(xiàn)空白一段時間,瀏覽器顯示是刷新請求狀態(tài)(也就是一直轉(zhuǎn)圈)嵌屎,這就會給用戶很不好的體驗推正,defer和async的合理使用就可以避免這個情況,而且通常script的位置建議寫在頁面底部(移動端應(yīng)用的比較多宝惰,這兩個都是html5中的新屬性)植榕。
所以相對于默認(rèn)的script引用,這里配合defer和async就有兩種新的用法尼夺,它們之間什么區(qū)別那尊残?
1.默認(rèn)引用 script:</script>
當(dāng)瀏覽器遇到 script 標(biāo)簽時,文檔的解析將停止淤堵,并立即下載并執(zhí)行腳本寝衫,腳本執(zhí)行完畢后將繼續(xù)解析文檔。
2.async模式
當(dāng)瀏覽器遇到 script 標(biāo)簽時拐邪,文檔的解析不會停止慰毅,其他線程將下載腳本,腳本下載完成后開始執(zhí)行腳本扎阶,腳本執(zhí)行的過程中文檔將停止解析汹胃,直到腳本執(zhí)行完畢婶芭。
3.defer模式?</script>
當(dāng)瀏覽器遇到 script 標(biāo)簽時,文檔的解析不會停止统台,其他線程將下載腳本雕擂,待到文檔解析完成,腳本才會執(zhí)行贱勃。
所以async和defer的最主要的區(qū)別就是async是異步下載并立即執(zhí)行井赌,然后文檔繼續(xù)解析,defer是異步加載后解析文檔贵扰,然后再執(zhí)行腳本仇穗,這樣說起來是不是理解了一點了;
它們的核心功能就是異步戚绕,那么兩種屬性怎么去區(qū)分什么情況下用哪個那纹坐,主要的參考是如果腳本不依賴于任何腳本,并不被任何腳本依賴舞丛,那么則使用 defer耘子,如果腳本是模塊化的,不依賴于任何腳本球切,那么則使用 async谷誓。
--------以上就是今天的內(nèi)容(半原創(chuàng)半搬運,勿噴)