为什么vue2只能有一个根节点
template 内的内容最终会被抽象为一个 vnode 节点
每个子组件在其父虚拟 dom 中由单个vnode.在当前的实现中,diffing 算法(负责将当前的 virtualDOM 与旧的 virtualDOM
进行比较,并将差异修补到真实 DOM 中)可以依赖于这样一个事实:子组件的每个 vnode 在真实 dom 中都有一个匹配的 HTML 元素,因此子组件
vnode 之后的 virutalDOM 中的下一个 vnode 保证与真实 DOM 中的下一个 HTML 元素匹配。
允许片段需要对该算法进行重大更改,因为我们现在必须以某种方式让父级始终了解子级当前在真实 DOM
中管理的根节点数量,因此当父级重新渲染时,它知道有多少根节点HTML-Elements 它必须“跳过”才能到达不属于子组件的下一个 HTML
元素,
这是Vue 核心的一段非常复杂/复杂的代码,它对于渲染性能至关重要 - 因此,不仅使其正常工作很重要,而且使其高性能也很重要。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.