过程JS 文件的处理方式"/>
渲染过程JS 文件的处理方式
渲染过程中遇到 JS 文件怎么处理?(浏览器解析过程)
JavaScript 的加载、解析与执行会阻塞文档的解析,也就是说,在构建 DOM 时,HTML 解析器若遇到了 JavaScript,那么它会暂停文档的解析,将控制权移交给 JavaScript 引擎,等 JavaScript 引擎运行完毕,浏览器再从中断的地方恢复继续解析文档。
也就是说,如果你想首屏渲染的越快,就越不应该在首屏就加载 JS 文件,这也是都建议将 script 标签放在 body 标签底部的原因。当然在当下,并不是说 script 标签必须放在底部,因为你可以给 script 标签添加 defer 或者 async 属性。
async 和 defer 的作用是什么?有什么区别?(浏览器解析过程)
(1)脚本没有 defer
或 async
,浏览器会立即加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行。
(2)defer 属性表示延迟执行引入的 JavaScript
,即这段 JavaScript
加载时 HTML
并未停止解析,这两个过程是并行的。当整个 document
解析完毕后再执行脚本文件,在 DOMContentLoaded
事件触发之前完成。多个脚本按顺序执行。
(3)async
属性表示异步执行引入的 JavaScript
,与 defer
的区别在于,如果已经加载好,就会开始执行,也就是说它的执行仍然会阻塞文档的解析,只是它的加载过程不会阻塞。多个脚本的执行顺序无法保证。
《defer 和 async 的区别》
更多推荐
渲染过程JS 文件的处理方式
发布评论