理解 <script> 标签的 defer 和 async 属性

简介: 理解 <script> 标签的 defer 和 async 属性

defer和async都是用于控制浏览器下载和执行JavaScript的方式的属性。

defer属性的效果是将JavaScript文件的下载放在HTML文件下载完成之后,但在HTML页面的解析过程中,会优先执行JavaScript的下载和解析,但不会中断HTML的解析和渲染。也就是说,当HTML解析完成后,JavaScript文件才会运行,而不会阻塞DOM的解析和渲染。

async属性的效果是让JavaScript文件的下载和执行异步进行,也就是说,JavaScript文件的下载和执行不会阻塞HTML页面的解析和渲染,但这也会导致JavaScript文件的执行时间不可预测,因为它的下载和执行是在HTML页面渲染的同时进行的。在使用async的情况下,无法保证JavaScript文件的执行顺序,所以在涉及到依赖关系的JavaScript代码中使用async会带来问题。

以下是具体的代码例子:

使用defer属性:

<!DOCTYPE html>
<html>
 <head>
    <title>Defer Example</title>
    <script defer src="defer.js"></script>
 </head>
 <body>
    <h1>Hello World</h1>
 </body>
</html>

defer.js文件内容如下:

alert("defer script is executed.");

使用async属性:

<!DOCTYPE html>
<html>
 <head>
    <title>Async Example</title>
    <script async src="async.js"></script>
 </head>
 <body>
    <h1>Hello World</h1>
 </body>
</html>

async.js文件内容如下:

alert("async script is executed.");

需要注意的是,以上例子中的JavaScript文件都是简单的弹窗提示,实际应用中可能会涉及到更加复杂的操作。同时,以上例子中的defer和async属性都是在单个JavaScript文件的情况下使用的,如果在一个页面中有多个JavaScript文件,不同的文件使用不同的属性会带来不可预测的效果。因此,在使用defer和async属性时,需要根据具体情况进行慎重选择。

相关文章
|
JavaScript 前端开发 UED
实现JavaScript中的事件监听功能
实现JavaScript中的事件监听功能
|
28天前
|
数据采集 人工智能 搜索推荐
智能新纪元:多模态大模型如何重塑人机交互
智能新纪元:多模态大模型如何重塑人机交互
200 113
|
Web App开发 缓存 监控
如何使用 Chrome DevTools 的 Performance 面板进行页面加载性能分析?
如何使用 Chrome DevTools 的 Performance 面板进行页面加载性能分析?
|
11月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
346 34
|
资源调度 Kubernetes 前端开发
react-intl——react国际化使用方案
react-intl——react国际化使用方案
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
624 5
舆情风险防控措施分享
舆情风险防控措施分享
ModBus Pull的详细安装教程
ModBus Pull的详细安装教程
603 1
|
机器学习/深度学习 文件存储 算法框架/工具
【YOLOv8改进- Backbone主干】2024最新轻量化网络MobileNetV4替换YoloV8的BackBone
YOLO目标检测专栏聚焦于模型的改进和实战应用,介绍了MobileNetV4,它在移动设备上优化了架构。文章提到了UIB(通用反向瓶颈)模块,结合了多种结构,增强了特征提取;Mobile MQA是专为移动平台设计的注意力层,提升了速度;优化的NAS提升了搜索效率。通过这些创新,MNv4在不同硬件上实现了性能和效率的平衡,且通过蒸馏技术提高了准确性。模型在Pixel 8 EdgeTPU上达到87%的ImageNet-1K准确率,延迟仅为3.8ms。论文、PyTorch和TensorFlow实现代码链接也已提供。