一、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脚本的加载和执行是并行进行的,就是异步进行的意思