搜尋
首頁web前端js教程Javascript中的defer屬性和async屬性的用法詳解

這篇文章帶給大家的內容是關於Javascript中的defer屬性和async屬性的用法詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

為什麼需要非同步載入js檔案:

不使用非同步,文件在載入js程式碼時會阻塞其他資源的下載,導致空白頁面。

(1)放在頂部的js腳本,瀏覽器在執行時需要花費時間去下載外鏈檔案的程式碼並執行,此時會導致明顯的延遲,顯示為空白頁面,用戶無法瀏覽內容,也無法與頁面互動。

(2)雖然IE8、Firefox3.5、Safari4、Chrome2都允許並行下載Javascript文件,腳本的下載過程不會互相影響,但頁面的加載仍舊需要等到所有的Javascript代碼下載並執行完成才能繼續。正因為如此,建議將<script>標籤置於<body>的底部。  </script>

  (3)由於每個<script>標籤下載時都會阻塞頁面渲染,因此建議減少<script>標籤的使用。不僅是外鏈腳本,內嵌腳本也是如此。瀏覽器在解析HTML頁面時每遇到一個<script>標籤都會因為執行腳本而導致一定的延遲。此外,考慮到HTTP請求帶來額外的效能開銷,下載單一100KB的檔案將比下載4個25KB的檔案更快。 </script>

defer和async的用法:

相同點:defer和async都是用來非同步載入腳本。採用並行下載,在下載過程中不會產生阻塞。

不同點:

defer:

(1)即可用於載入外部腳本,也可用於載入內嵌腳本。內嵌腳本僅限於IE9及以下,主流瀏覽器依據W3C的HTML5規格:defer僅當src屬性宣告時生效。

如:

//外部脚本<script src="1.js" defer></script>//内嵌脚本<script defer>
    console.log("defer");</script>

(2)帶有defer屬性的<script>標籤可以放在頁面的任何位置,對應的Javascript檔案會在頁面解析到<script>標籤時開始下載,但不會執行,DOM載入完成後執行(在onload事件之前呼叫)。 </script>

async: 

(1)只用於外部腳本。

(2)async載入完成後立即執行。

附:defer屬性的瀏覽器支援情況詳見:https://caniuse.com/#feat=script-defer,搜尋defer即可。

為什麼需要非同步載入js檔案:

不使用非同步,文件在載入js程式碼時會阻塞其他資源的下載,導致空白頁面。

(1)放在頂部的js腳本,瀏覽器在執行時需要花費時間去下載外鏈檔案的程式碼並執行,此時會導致明顯的延遲,顯示為空白頁面,用戶無法瀏覽內容,也無法與頁面互動。
(2)雖然IE8、Firefox3.5、Safari4、Chrome2都允許並行下載Javascript文件,腳本的下載過程不會互相影響,但頁面的加載仍舊需要等到所有的Javascript代碼下載並執行完成才能繼續。正因為如此,建議將

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。