(浏览器渲染引擎的渲染流程)javascript
关键渲染路径是指浏览器从最初接收请求来的HTML、CSS、javascript等资源,而后解析、构建树、渲染布局、绘制,最后呈现给客户能看到的界面这整个过程。vue
因此浏览器的渲染过程主要包括如下几步:java
虚拟DOM就是为了解决浏览器性能问题而被设计出来的。假如像上面所说的,若一次操做中有10次更新DOM的动做,会生成一个新的虚拟DOM,将新的虚拟DOM和旧的进行比较,而后将10次更新的 diff 内容保存到一个JS对象中,最终经过这个JS对象来更新真实DOM,由此只进行了一次操做真实DOM,避免大量无谓的计算量。因此,虚拟DOM的做用是将多个DOM操做合并成一个,而且将DOM操做先所有反映在JS对象中(操做内存中的JS对象比操做DOM的速度要更快),再将最终的JS对象映射成真实的DOM,交由浏览器去绘制。算法
虚拟DOM就是是用JS对象来表明节点,每次渲染都会生成一个VNode。当数据发生改变时,生成一个新的的VNode,经过 diff 算法和上一次渲染时用的VNode进行对比,生成一个对象记录差别,而后根据该对象来更新真实的DOM。本来要操做的DOM在vue这边仍是要操做的,不过是统一计算出全部变化后统一更新一次DOM,进行浏览器DOM的一次性更新。浏览器
参考:https://baijiahao.baidu.com/s?id=1593097105869520145&wfr=spider&for=pc、https://www.jianshu.com/p/af0b398602bcide