script标签的defer与sync
作用: 异步加载js文件,不阻塞页面解析。(内联脚本无法异步加载)
了解 window.onload与DOMcontentLoaded的区别
defer与sync的区别
defer
下载完毕等待文档解析完成后执行【在DOMContentLoaded事件前执行,有可能阻塞DOM渲染】
注意:
1、如果有多个声明了defer的脚本,则会按顺序下载和执行
2、如果没有src属性则该属性无效
async
下载完毕立即执行【在window.onload事件前执行】
注意:async下载js脚本不能保证执行顺序,因此js脚本之间不能有依赖关系。
可视化script标签
使用场景
如果脚本不依赖于其他脚本,则使用async
如果脚本依赖于其他脚本,则使用defer
应用场景
淘宝首页用的都是async:https://www.taobao.com/
async在 window.onload事件前执行【此时DOM应该已经渲染完成,因此不阻塞DOM渲染】