HTML script标签中defer和async的区别

133 阅读1分钟

一、defer 和 async 出现的意义

如果 script 标签中没有 defer 和 async,浏览器解析到 script 标签时就会立即加载并执行该脚本,从而阻塞了后续 html 文档的解析

其中蓝色代表js脚本网络加载时间,红色代表js脚本执行时间,绿色代表html解析。

二、defer 和 async 共同点

defer 和 async 属性都可以异步加载外部的JS脚本文件,它们都不会阻塞页面的解析

三、defer 和 async 区别

  • 设置 defer 属性之后,解析后续html文档的过程和js脚本的加载是并行进行的(异步),但是js脚本需要等到html文档所有元素解析完成之后才执行

  • 设置 async 属性之后,后续html文档的解析与js脚本的加载和执行是并行进行的,就是异步进行的意思