# VNode
# VNode是什么
- 虚拟节点,不是真的DOM节点
 - 用JS对象来描述真实DOM
 
  <div class="parent" style="height:0" href="222">111</div>
  // 使用VNode构造函数可以生成如下的VNode
  {
    tag:'div',
    data:{
      attrs:{href:"222"},
      staticClass:"parent",
      staticStyle:{height:"0"}
    },
    children:[{
      tag:undefined,
      text:"111"
    }]
  }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# VNode有什么用
- 兼容性强:VNode是JS对象,不管是Node还是浏览器都可以统一操作,从而获得了服务端渲染、原生渲染、手写渲染函数等能力
 - 减少DOM操作:任何页面的变化,都只使用VNode进行操作对比,只需要在最后一步挂载更新DOM