(学习笔记)-------深入浏览器的渲染原理(二)记录学习的过程

98 阅读1分钟

script和页面解析的关系?(阻塞)

浏览器在解析HTML的过程中,遇到script元素是不能继续构建DOM树的,
它会停止继续构建,首先先下载Javascript代码,并且执行JavaScript的脚本,
等到JavaScript脚本执行完之后才会继续解析HTML,构建DOM树。

这样做的目的是?

 因为Js的作用就是操作DOM,并且可以修改DOM;
 如果我们等到DOM树构建完成并且渲染再执行JS,会造成严重的回流和重绘,影响页面的性能。
 在遇到script元素时,优先下载和执行JSdiamagnetic,再继续构建DOM树。

现代页面的开发模式(Vue,React)

 目前开发模式,脚本比HTML更多,处理时间需要更长,所以会造成页面的解析阻塞,在脚本下载,执行完成之前,用户在界面上什么都看不到解决的方案是:script元素提供了两个属性:deferasync

defer和async使用

1.defer属性告诉浏览器不要等待脚本下载,继续解析HTML,构建DOM Tree.脚本会由浏览器来下载,不会阻塞DOM Tree的构建过程; 2.脚本如果提前下载好了,会等待DOM Tree构建完成,在DOMContentLoaded事件之前先执行defer中的代码;