虚拟 DOM 是在内存中用普通对象描述页面结构,状态变化时生成新树与旧树对比(diff),只把差异部分应用到真实 DOM。它解决了「频繁整树操作真实 DOM」的性能问题,也让开发者用声明式思维写 UI。
要澄清一个常见误解:虚拟 DOM 不一定比手工优化快——它的价值在于「保证可接受性能下限的同时,把开发者从手动 DOM 操作中解放出来」。框架层面还有编译期优化(Vue 的静态提升、React 的 Fiber 架构)等更深手段。
// 虚拟 DOM 长这样(JS 对象) const vnode = { tag: 'div', props: { class: 'card' }, children: [ { tag: 'h2', children: '标题' }, { tag: 'p', children: '内容' } ] }; // 框架 diff 新旧 vnode 树,只 patch 变化的节点