普通脚本:立即请求文件,并阻塞渲染引擎,js文件加载后立即阻塞渲染引擎并执行文件内容,async属性:请求文件immediately,但不阻塞渲染引擎,js文件加载后阻塞渲染引擎,立即执行文件内容(使用async导入的多个脚本不保证按引入顺序执行)defer属性:立即请求文件,但不要阻塞渲染引擎,等到html解析完成(DOMContentLoaded事件调用再次执行文件内容(使用defer导入的多个脚本会按导入顺序执行)type="module"属性:浏览器按照ECMAScript6标准将文件作为一个模块进行解析,默认阻塞效果与defer相同,也可以结合使用onwith请求完成后立即异步执行的具体效果如图:绿线表示解析html,蓝线表示请求文件,红线表示执行脚本代码
