异步加载defer,async

话不多说,上图

 

推荐的应用场景

defer

1. defer只适用于外联脚本,如果script标签没有指定src属性,只是内联脚本,不要使用defer 
2. 如果有多个声明了defer的脚本,一般会按顺序下载和执行 
3. defer脚本一般会在DOMContentLoaded事件之前执行 

如果你的脚本代码依赖于页面中的DOM元素(文档是否解析完毕),或者被其他脚本文件依赖。
例:

  1. 评论框
  2. 代码语法高亮
  3. polyfill.js

async

1. 只适用于外联脚本,这一点和defer一致 
2. 如果有多个声明了async的脚本,其下载和执行也是异步的,不能确保彼此的先后顺序 
3. async会在load事件之前执行,但并不能确保与DOMContentLoaded的执行先后顺序

如果你的脚本并不关心页面中的DOM元素(文档是否解析完毕),并且也不会产生其他脚本需要的数据。
例:

  1. 百度统计

如果不太能确定的话,用defer总是会比async稳定

 

posted @ 2021-09-07 17:37  盼星星盼太阳  阅读(79)  评论(0)    收藏  举报