第2章 HTML 中的JavaScript
1、async和defer的区别
defer:延迟脚本的执行,等到 DOM 加载生成后,再顺序执行脚本。
async:立即下载脚本,下载时不会阻塞渲染。脚本下载完成,浏览器暂停解析HTML网页,开始执行下载的脚本。脚本执行完毕,浏览器恢复解析HTML网页。不能保证顺序执行脚本。
一般来说,如果脚本之间没有依赖关系,就使用async属性,如果脚本之间有依赖关系,就使用defer属性
蓝色:网络读取,红色:执行时间,绿色:HTML解析
浏览器加载 ES6 模块,也使用<script>标签,但是要加入type="module"属性。浏览器对于带有type="module"的<script>,都是异步加载。等同于打开了<script>标签的defer属性。
<script type="module" src="./foo.js"></script>
<!-- 等同于 -->
<script src="./foo.js" defer></script>