关于前端:JS会阻塞页面的加载

JS阻塞DOM解析,也就会阻塞页面。

这也是为什么JS文件放在最上面的起因。
那为什么会阻塞DOM解析呢?

· 因为JS是可操纵DOM的,
· 如果在批改这些元素属性同时渲染页面(即js线程和UI线程同时运行),
· 那么渲染线程前后取得的元素数据就可能不统一了。
· 为了避免渲染呈现不可预期的后果,
浏览器设置 GUI渲染线程与js引擎为互斥的关系。
· 当JS引擎执行时,GUI线程会被挂起,
GUI更新会被保留在一个队列中期待引擎线程闲暇时立刻被执行。
· 当浏览器在执行JS程序的时候,
GUI渲染线程会被保留在一个队列中,
直到JS程序执行实现后才会立刻被执行。
如果JS执行的工夫过长,
这会造成页面的渲染不连贯,
导致页面渲染加载阻塞的感觉。
· 如果JS文件中没有操作DOM相干的代码,
就能够将JS脚本设置为异步加载,
通过async或defer来进行标记代码。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理