编程 Vue 3.6 换掉 @vue/reactivity 之后:alien-signals 的收益与 Vapor 还够不到的边界

2026-09-27 21:02:49

Vue 3.6 换掉 @vue/reactivity 之后:alien-signals 带来的收益,和 Vapor 还够不到的边界

反应式内核已经是 alien-signals

Vue 3.6 的反应式内核换成了 alien-signals(外部信号库),并且已经成为默认实现,不需要任何配置。

官方与第三方基准里,这一步带来明显的性能提升与内存下降。初步集成时的基准显示内存约降 14%。

版本状态

Vue 3.6 目前处于 RC 阶段(v3.6.0-rc.9,2026-09-18),特性集已冻结。官方声明没有破坏性变更,经典 VDOM 模式保持完全支持、行为不变。

Vapor Mode 是新反应式系统之上再走一步

Vapor 组件完全跳过 VDOM,编译器把模板直接编译成命令式 DOM 操作;编译期就知道所有响应式点位,并针对这些点位做优化。

需要注意的是体积收益的获取条件:纯 Vapor 应用能把 VDOM 运行时整个从包里去掉,所以只有全量采用时才完全拿得到这部分收益。

收益最大的是数据密集的响应式应用、低端设备和移动端。

容易踩到的边界

  • Vapor 100% opt-in,只支持现有 Vue API 的子集;依赖 VNode 或组件公共实例 proxy 的特性在 Vapor 组件里不可用。
  • 不支持 Options API;只支持 SFC(或)和无 script 块的模板 SFC。
  • getCurrentInstance() 在 Vapor 组件里返回 null;@vue:xxx 元素生命周期钩子等行为不同。
  • Suspense 在纯 Vapor 模式不支持,但可以在 VDOM 的 Suspense 里渲染 Vapor 组件;Suspense 本身在 Vue 中仍标注 experimental。
  • 第三方库需要更新才能兼容;Vapor 与 VDOM 混用(同时跑两套)可能反而增大体积。
  • Nuxt/SSR 下 Vapor 仍属「施工中」,hydration 能用,但每个 RC 都还在修。

参考

复制全文 生成海报 Vue 3.6 alien-signals Vapor reactivity

推荐文章

程序员茄子在线接单