虚拟 DOM 是用 JS 对象模拟真实 DOM 的轻量级抽象,通过 diff 算法比对新旧树、最小化更新并批量同步到真实 DOM,从而减少重排重绘;它并非天生更快,而是以可控 JS 计算换更少更准的 DOM 操作。
虚拟 DOM 是 JavaScript 中用普通对象模拟真实 DOM 结构的一种轻量级抽象。它本身不是浏览器 API,而是一个由框架(如 React、Vue)维护的内存中树状数据结构,用来描述页面应有的 UI 状态。
当组件状态变化时,框架会生成一棵新的虚拟 DOM 树,然后和上一次的旧树进行对比(这个过程叫 diff),只找出真正发生变化的节点。接着,框架把差异批量映射到真实 DOM 上,避免频繁、零散的 DOM 操作。
关键不在于“虚拟 DOM 本身快”,而在于它让框架有能力做 最小化更新 和 批量更新。
document.
createElement、appendChild 等原生 API(这些会同步影响渲染流水线)它适合中大型、交互频繁的应用;对于静态页面或简单动态内容,直接操作 DOM 可能更轻量、更直观。
key 会导致 diff 失效,反而降低性能基本上就这些。它不是黑科技,而是一种权衡——用可控的 JS 计算换更少、更准的真实 DOM 操作。