主题
vnode、render 和虚拟 DOM 的关系
render函数:- 用户可操作的函数:
render函数是用户定义的,用来决定返回虚拟节点(vnode)的内容。 - 返回虚拟节点(
vnode):当render函数执行时,它会返回一个虚拟节点(vnode),这个vnode是对真实 DOM 的抽象描述。通过vnode,Vue 确定如何渲染和更新组件的视图。 - 模板编译为
render函数:在 Vue 中,模板会被编译成render函数。模板就是render函数的语法糖,最终都会通过render函数生成虚拟节点。
- 用户可操作的函数:
vnode(虚拟节点):- 虚拟 DOM 的核心:
vnode是对真实 DOM 元素的抽象表示,包含标签、属性、子节点等信息。 - 由
render生成:每次执行render函数时,都会返回一个新的vnode。 - 描述组件或元素:虚拟节点不仅可以表示 HTML 元素,也可以表示组件。
vnode的type属性指向组件的构造函数或描述对象。
- 虚拟 DOM 的核心:
- 虚拟 DOM 的更新:
- 差异比较(diff):当数据变化时,
render函数会被重新执行,返回新的vnode。Vue 会将新的vnode与上一个vnode进行对比,计算出最小的差异。 - 更新真实 DOM:根据差异,Vue 更新真实 DOM,确保界面只进行最小的变动,从而提高性能。
- 差异比较(diff):当数据变化时,
- 渲染过程:
- 组件的渲染过程是:
render函数执行,生成vnode。vnode被用于描述 UI,虚拟 DOM 与真实 DOM 比较。- 最小差异被应用到真实 DOM 上,从而更新界面。
- 组件的渲染过程是:
- 顺序:
- 先有
render函数,它描述了组件如何渲染,并生成虚拟节点(vnode)。 - 再有
vnode,它是由render函数返回的,表示渲染结果。
- 先有
