2-10 virtual DOM
引入vDOM的原因是使用真实DOM是非常昂贵的,我们知道一个真实DOM其实是有上百个属性的,因为游览起的标准就把DOM实现的非常复杂。所以vue实现了一个VNode,只定义了十几种属性,便可以描述一个dom。
目录:core/vdom/vnode.js
export default class VNode {
tag: string | void;
data: VNodeData | void;
children: ?Array<VNode>;
text: string | void;
elm: Node | void;
ns: string | void;
context: Component | void; // rendered in this component's scope
key: string | number | void;
componentOptions: VNodeComponentOptions | void;
componentInstance: Component | void; // component instance
parent: VNode | void; // component placeholder node
}
这是几个比较常用的VNode中的属性。
vue的virtual DOM的实现呢借鉴了开源库snabdom。