无虚拟 DOM 版 Vue 来了
Vapor Mode 是 Vue 单文件组件(SFC)的一种全新编译模式,旨在去除虚拟 DOM 的引擎负担,打造更轻更快的运行时性能体验。
这个概念最早由尤雨溪于 2022 年提出,曾在独立仓库“vue-vapor”中尝试实现,最终回归到 Vue 主体框架之中。
Vapor Mode 的几个核心特性如下:
- 没有虚拟 DOM,自然也就没有 diff、patch 等运行时开销;
- 编译时生成高效的指令式渲染代码;
- 运行时更轻巧,包体积显著下降;
- 全新响应式核心,移植自 alien-signals,更新更快;
- 保留 Vue 风格:仍使用
<template>
+<script setup>
组合。
Vapor 模式已经在第三方基准测试中与 SolidJS、Svelte 5 旗鼓相当,尤其在大规模组件渲染场景中展现出极佳性能。
Vapor 模式不仅简化了运行时结构,还重新设计了组件属性和插槽(prop + slots)机制,实现了懒初始化。这意味着什么?
尤雨溪表示:在 100ms 内挂载 10 万个组件 成为了现实。
Vapor 模式适用于哪些场景?
目前 Vapor 仍处于 Alpha 阶段,推荐使用范围:
- 局部引入:为现有 Vue 项目的性能瓶颈页面使用 Vapor;
- 新项目尝鲜:构建小型工具、原型、或新项目,全面使用 Vapor。
不建议立刻重构迁移现有大型组件库,部分功能尚未完全支持。