当前位置: 首页 > Web前端 > vue.js

浏览器渲染,虚拟节点,diff

时间:2023-04-01 00:34:03 vue.js

1,浏览器获取html文件渲染过程1,解析html文件,构建dom规则树(domtree)。2、解析css文件,构建css规则树(rendertree)3、将dom号与css树相关联,生成渲染(render)树4、布局(layout/reflow、reflow),浏览器根据每个rendertreeNode,确认在屏幕上的具体位置和大小。5.绘制渲染树。将页面像素信息绘制到屏幕上,这个过程称为重绘(paint)。**回流与重绘的区别,回流:当由于元素的大小、布局、隐藏等变化,需要重新构建渲染树的部分或全部时,称为回流。每个页面至少需要回流一次,因为页面的初始加载需要构建渲染树;在reflow过程中,浏览器会将rendertree受影响的部分作废,重新渲染rendertree的部分,完成渲染。回流之后,浏览器会在屏幕上重新绘制这部分渲染树的节点。这个过程称为重绘(所以回流一定会引起重绘)。重绘:当渲染树的一些属性发生变化时,只会改变元素的外观和样式,不会影响元素的大小和布局,比如background-color。称为重绘。****结论:使用原生js或者jquery来操作dom操作都会经过上面的过程。因此,频繁的操作dom会造成不必要的计算;导致页面卡顿,影响体验。这时候虚拟dom就出现了。虚拟节点(VNode)由一个js对象表示。根据VNode,计算真实dom的最小变化(这种算法称为diff算法),然后对dom进行实际操作,减少不必要的渲染计算,提高渲染效果。效率。二、虚拟节点VirtualDOM1,虚拟dom结构使用js对象记录真实的dom节点。2.流程(1)先用虚拟节点记录真实的dom节点。(2)当数据发生变化时,使用diff算法将数据变化后生成的虚拟节点与之前的节点进行比较。(3)将替换后的虚拟节点渲染到页面中。3、diff算法逐层比较,替换虚拟节点。逐层比较只需要一个循环,时间复杂度(n)4、实际DOM树的渲染