狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Script的async和defer

freeflydom
2024年4月26日 12:31 本文熱度 693

介紹async 和 defer的使用

在HTML中,<script>標(biāo)簽用于嵌入或引用JavaScript代碼。asyncdefer都是<script>標(biāo)簽的屬性,用于改變腳本的加載和執(zhí)行方式,以優(yōu)化頁面加載性能。

async屬性

  • 定義async屬性表示異步地加載腳本。當(dāng)瀏覽器遇到帶有async屬性的<script>標(biāo)簽時(shí),它會(huì)并行下載腳本,而不阻塞HTML文檔的解析。

  • 行為:當(dāng)腳本下載完成后,瀏覽器會(huì)暫停文檔的解析,執(zhí)行這個(gè)腳本,然后再繼續(xù)HTML文檔的解析。

  • 使用場(chǎng)景:適用于那些與頁面其余部分相互獨(dú)立的腳本,比如廣告加載和數(shù)據(jù)追蹤腳本。因?yàn)?code>async腳本不保證按照指定的順序執(zhí)行,所以不適用于相互依賴的腳本。

defer屬性

  • 定義defer屬性表示在文檔解析和顯示完成后,再延遲執(zhí)行腳本。

  • 行為:帶有defer屬性的腳本將被并行下載,但不會(huì)阻斷文檔的解析。這些腳本直到整個(gè)頁面都解析完成后,才會(huì)按照它們?cè)谖臋n中出現(xiàn)的順序執(zhí)行。

  • 使用場(chǎng)景:適用于那些需要等待DOM樹構(gòu)建完成后才能執(zhí)行的腳本,比如操作DOM的腳本。defer腳本保證了執(zhí)行順序,適用于有依賴關(guān)系的腳本。

async與defer的區(qū)別

  • 執(zhí)行時(shí)間async腳本在下載完成后立即執(zhí)行,這可能會(huì)在文檔解析過程中發(fā)生;而defer腳本則要等到文檔解析完成后,才會(huì)按順序執(zhí)行。

  • 執(zhí)行順序:多個(gè)async腳本不能保證按照它們?cè)贖TML文檔中的順序執(zhí)行,而多個(gè)defer腳本則總是會(huì)按照它們?cè)谖臋n中出現(xiàn)的順序依次執(zhí)行。

使用示例

<!-- 異步加載腳本,不保證執(zhí)行順序 -->

<script async src="script1.js"></script>

<script async src="script2.js"></script>


<!-- 延遲執(zhí)行腳本,保證按照出現(xiàn)順序執(zhí)行 -->

<script defer src="script1.js"></script>

<script defer src="script2.js"></script>


在實(shí)際開發(fā)中,根據(jù)腳本的功能和依賴關(guān)系選擇使用asyncdefer,可以在不阻塞頁面渲染的同時(shí),優(yōu)化用戶體驗(yàn)。

如果用JS創(chuàng)建的script標(biāo)簽,想創(chuàng)建一個(gè)async的script,應(yīng)該怎么寫呢?

在JavaScript中動(dòng)態(tài)創(chuàng)建并插入一個(gè)具有async屬性的<script>標(biāo)簽,可以按照以下步驟進(jìn)行:

  1. 使用document.createElement()方法創(chuàng)建一個(gè)新的<script>元素。

  2. 設(shè)置這個(gè)新創(chuàng)建的<script>元素的src屬性,指定需要加載的腳本URL。

  3. 設(shè)置async屬性為true,使其異步加載。

  4. 將這個(gè)<script>元素添加到文檔中,通常是添加到<head><body>元素中。

以下是具體的代碼示例:

// 創(chuàng)建一個(gè)新的script元素

var script = document.createElement('script');


// 設(shè)置script元素的src屬性

script.src = 'https://example.com/some-script.js';


// 將async屬性設(shè)置為true

script.async = true;


// 將script元素添加到文檔的<head>部分

document.head.appendChild(script);

這段代碼將創(chuàng)建一個(gè)新的<script>元素,將其src屬性設(shè)置為指定的腳本URL,并通過設(shè)置async屬性為true來實(shí)現(xiàn)異步加載。最后,這個(gè)<script>元素被添加到文檔的<head>部分,從而開始異步加載并執(zhí)行指定的JavaScript文件。

通過這種方式動(dòng)態(tài)添加的<script>標(biāo)簽,其行為與在HTML中直接使用<script async src="...">標(biāo)簽相同,即不會(huì)阻塞頁面的解析和渲染,提高了頁面加載的性能。


作者:Struggle_zhu
鏈接:https://juejin.cn/post/7362080157191651354
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。



該文章在 2024/4/28 10:25:37 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved