1) VNode 是什么
VNode 是 JavaScript 对象, VNode 表示 Virtual DOM(虚拟DOM)中的虚拟节点,用 JavaScript 对
象来描述真实的 DOM 把 DOM 标签 属性,内容都变成 对象的属性
2) VNode 的优点
1、兼容性强,不受执行环境的影响。因为 VNode 是 JS 对象,不管 Node
还是浏览器,都可以统一操作,所以获得了服务端渲染、原生渲染、手写渲染函
数等能力。
2、减少操作 DOM,任何页面的变化,都只使用 VNode 进行操作对比,只
需要在最后一步挂载更新 DOM,不需要频繁操作 DOM,从而提高页面性能。
什么是虚拟 DOM?
虚拟 dom 是相对于浏览器所渲染出来的真实 dom而言的 就是一个普通的 JavaScript 对象,目的是为了进行最小化地DOM操作。
为什么要用虚拟DOM来描述真实的DOM呢?
创建真实DOM成本比较高,而如果用js对象来描述一个dom节点,成本比较低,另外我们在频繁操作dom是一种性能开销比较大。所以用虚拟dom来描述真实dom。
1.为什么操作真实DOM的成本比较高?
我认为有以下几点
(1) 真实 DOM 因为浏览器厂商需要实现众多的规范(各种 HTML5 属性、DOM事件),即使创建一个空的 div 也要付出昂贵的代价。
(2) dom 操作引起的浏览器的回流和重绘,使得性能开销巨大。