LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Script的async和defer

freeflydom
2024年4月26日 12:31 本文热度 36

介绍async 和 defer的使用

在HTML中,<script>标签用于嵌入或引用JavaScript代码。asyncdefer都是<script>标签的属性,用于改变脚本的加载和执行方式,以优化页面加载性能。

async属性

  • 定义async属性表示异步地加载脚本。当浏览器遇到带有async属性的<script>标签时,它会并行下载脚本,而不阻塞HTML文档的解析。

  • 行为:当脚本下载完成后,浏览器会暂停文档的解析,执行这个脚本,然后再继续HTML文档的解析。

  • 使用场景:适用于那些与页面其余部分相互独立的脚本,比如广告加载和数据追踪脚本。因为async脚本不保证按照指定的顺序执行,所以不适用于相互依赖的脚本。

defer属性

  • 定义defer属性表示在文档解析和显示完成后,再延迟执行脚本。

  • 行为:带有defer属性的脚本将被并行下载,但不会阻断文档的解析。这些脚本直到整个页面都解析完成后,才会按照它们在文档中出现的顺序执行。

  • 使用场景:适用于那些需要等待DOM树构建完成后才能执行的脚本,比如操作DOM的脚本。defer脚本保证了执行顺序,适用于有依赖关系的脚本。

async与defer的区别

  • 执行时间async脚本在下载完成后立即执行,这可能会在文档解析过程中发生;而defer脚本则要等到文档解析完成后,才会按顺序执行。

  • 执行顺序:多个async脚本不能保证按照它们在HTML文档中的顺序执行,而多个defer脚本则总是会按照它们在文档中出现的顺序依次执行。

使用示例

<!-- 异步加载脚本,不保证执行顺序 -->

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

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


<!-- 延迟执行脚本,保证按照出现顺序执行 -->

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

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


在实际开发中,根据脚本的功能和依赖关系选择使用asyncdefer,可以在不阻塞页面渲染的同时,优化用户体验。

如果用JS创建的script标签,想创建一个async的script,应该怎么写呢?

在JavaScript中动态创建并插入一个具有async属性的<script>标签,可以按照以下步骤进行:

  1. 使用document.createElement()方法创建一个新的<script>元素。

  2. 设置这个新创建的<script>元素的src属性,指定需要加载的脚本URL。

  3. 设置async属性为true,使其异步加载。

  4. 将这个<script>元素添加到文档中,通常是添加到<head><body>元素中。

以下是具体的代码示例:

// 创建一个新的script元素

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


// 设置script元素的src属性

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


// 将async属性设置为true

script.async = true;


// 将script元素添加到文档的<head>部分

document.head.appendChild(script);

这段代码将创建一个新的<script>元素,将其src属性设置为指定的脚本URL,并通过设置async属性为true来实现异步加载。最后,这个<script>元素被添加到文档的<head>部分,从而开始异步加载并执行指定的JavaScript文件。

通过这种方式动态添加的<script>标签,其行为与在HTML中直接使用<script async src="...">标签相同,即不会阻塞页面的解析和渲染,提高了页面加载的性能。


作者:Struggle_zhu
链接:https://juejin.cn/post/7362080157191651354
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



该文章在 2024/4/28 10:25:37 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved