脚本加载方式如何影响解析、执行顺序与页面性能?
简答题困难740 次浏览
参考答案与解析
核心结论
脚本策略应根据依赖关系、是否需要阻塞解析、是否属于关键交互以及代码形态选择。经典脚本默认可能阻塞文档解析;带 defer 的外部经典脚本通常并行下载,在文档解析完成后按文档顺序执行;带 async 的脚本下载完成后尽快执行,彼此顺序不稳定;模块脚本 type="module" 默认具有类似延迟执行的行为,并通过模块依赖图加载。不存在对所有脚本都最优的统一属性。
底层机制与决策依据
浏览器解析 HTML 时逐步构建 DOM。遇到普通外部经典脚本,通常需要暂停解析,等待资源下载并执行,因为脚本可能调用 document.write 或查询、修改当前文档,解析器不能任意越过这种副作用
