Vue3 为什么不做 Fiber / 并发渲染?

张开发
2026/6/14 18:06:26 15 分钟阅读
Vue3 为什么不做 Fiber / 并发渲染?
一句话结论因为 Vue3 根本不需要 Fiber。Vue 的响应式 精确更新从根源上避免了“长任务阻塞”所以 Fiber 那套“可中断、时间切片”对 Vue 收益极低。1. 根本原因Vue 更新范围太小、太精准ReactsetState → 整棵树重新渲染量大 → 容易产生长任务 → 需要 Fiber 切片Vue依赖收集 → 只更新用到该数据的组件量极小 → 本来就不会卡主线程→不需要切片一句话React 是因为更新太“粗”才需要 FiberVue 更新太“精”Fiber 无用武之地。2. Vue 是同步更新本来就极快Vue 更新流程数据变化微任务批量更新精准 diff极小区域最少 DOM 操作整个过程非常轻、非常快根本不会产生 long task。既然不阻塞为什么要拆Fiber 的目的是防止卡顿Vue 从根源上就不卡。3. Fiber 的复杂度成本极高Vue 不需要承担Fiber 带来链表结构、优先级、中断、恢复、重试、双缓冲…架构极度复杂有额外运行时开销会让组件渲染逻辑变得不可预测Vue 坚持的理念简单、高效、直观、可预测引入 Fiber 自废武功4. Vue3 的真正优化方向不是“调度”而是“精准”React我更新量大 → 我要切片不阻塞你Vue我更新量极小 → 我根本不让量大发生Vue3 做的是Proxy 响应式依赖收集精准更新双端 diff LIS 最少 DOM编译优化 patchFlag静态提升全部都是从源头减少工作量而不是等工作量大了再去切片。5. 最扎心、最本质的一句话React 需要 Fiber是因为它不知道哪些变了只能全量重新渲染。Vue 不需要 Fiber是因为它精确知道谁变了只更新那一点点。面试满分口述版直接背Vue3 不采用 Fiber 架构不是做不到而是完全不需要。Vue 基于响应式依赖收集更新范围极其精准只会渲染用到该数据的组件不会产生大量计算任务。Vue 是同步微任务批量更新速度快、DOM 操作少不会阻塞主线程因此不需要时间切片与中断机制。Fiber 是为了解决 React组件级重渲染带来的长任务阻塞而 Vue 从根源上避免了这个问题。Vue3 的优化方向是精准更新、最小 DOM 操作引入 Fiber 只会增加架构复杂度没有实际收益。

更多文章