虚拟dom
虚拟dom其实就是用普通的js对象来描述DOM结构,因为不是真实的dom所以称之为虚拟dom
虚拟dom是相对于浏览器所渲染出来的真实dom而言的,在react,vue等技术出现之前,我们要改变页面展示的内容,只能通过遍历查询dom树的方式,找到需要修改的dom,然后修改样式行为或者结构,来达到更新视图的目的
为什么要用虚拟dom来描述真实的dom呢?
创建真实DOM成本比较高,如果用js对象来描述一个dom节点,成本比较低,另外如果频繁操作dom也是一种比较大的开销。因此建议用虚拟dom来描述真实dom
什么是diff算法?
diff算法就是进行虚拟节点对比,并返回一个patch回想,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新DOM
什么是回流和重绘?
当渲染树中的一部分或者全部因为元素的尺寸、布局、隐藏等改变而需要重新构建的时候,这时候就会发生回流。
每个页面都至少发生一次回流,也就是页面第一次加载的时候。
在回流的时候,浏览器会使渲染树中受到影响的元素部分失效,并重新绘制这个部分的渲染树,完成回流以后,浏览器会重新绘制受到影响的部分元素到屏幕中,这个过程就是重绘。