非同步載入JS之async defer

2021-08-17 14:14:14 字數 603 閱讀 7971

繼前面了解的js載入時間線,然後對js的非同步載入的方式進行了更深一步的了解;

預設情況下,js檔案是同步載入的,當頁面載入到js檔案時,頁面就會被阻斷在這個地方,阻斷了html、css的載入線;

為什麼不非同步載入js呢?(因為,js會修改html、css);

又因為js是同步載入的,所以對於不會修改頁面的js工具包來說,是浪費了效率的,因為他阻斷了html、css的載入線;所以,我們就希望對於這樣(不呼叫就不會對頁面有影響的工具包)工具包,他應該是非同步載入的;

非同步載入簡單的兩種方式

1、defer屬性,用法:

這種方法只有ie瀏覽器能用;可以引入外部檔案也可以在內部寫**;

但是要等到文件解析完才能執行(也就是dom樹解析完畢,而不是載入完畢);

2、async屬性,用法:

這個方法適用於除ie外的其他瀏覽器,是html5的新屬性;

只能外部引用檔案,即具有src屬性;

載入完example.js就立即執行;

由此可見,上面兩種方法都存在相容性的問題;那麼就出現了第三種方法即按需載入;(還未使用,暫不貼**了);

JS 非同步載入

參考學習 有關promise的學習 如果 async async 指令碼相對於頁面的其餘部分非同步地執行 當頁面繼續進行解析時,指令碼將被執行 如果不使用 async 且defer defer 指令碼將在頁面完成解析時執行 如果既不使用 async 也不使用 defer 在瀏覽器繼續解析頁面之前,立...

js的非同步載入

今天被問到了如何非同步載入js,聽到這句話我內心是拒絕的,啥玩意兒?js也要用非同步載入不是引入了就行了,也沒見速度變慢啊。後來仔細查詢了一下,才發現自己原來還是太年輕了。因為之前自己寫的載入的都是本地js,或者是並沒有複雜邏輯運算的js,導致看不出來太大問題,查完資料後,要將不會的記在這裡,當作學...

JS的非同步載入

自覺自己基礎不紮實,不應該心猿意馬,所以很久沒有更新效能優化專欄,回顧總結了一段時間後再來一發吧 在學習前端開發的最開始,就可能有人告訴你,在 body 的末尾再引入 script 標籤 收到依賴的jquery更適合放在前面 書寫js 就提高效率,這到底是為什麼呢?先看乙個不好的例子 class p...