Vue 3 vs Vue 2 (核心差异)
1. 面试题
Q: Vue 3 相比 Vue 2 有哪些巨大的变化?升级的动力是什么?
2. 核心改进
(1) 响应式系统重构
- Vue 2: Object.defineProperty。初始化慢,有数组/新增属性监听不到的缺陷。
- Vue 3: Proxy。全能拦截,懒代理,性能更好。
(2) 组合式 API (Composition API)
- Vue 2: Options API (data/methods)。逻辑分散,复用靠 Mixin (有坑)。
- Vue 3: Setup / Hooks。逻辑聚合,极致复用,更好的 TS 支持。
(3) 性能提升
- 打包大小:Tree-shaking 支持。
- 渲染性能:
- Patch Flags:动态标记。
- Hoist Static:静态提升。
- Block Tree:动态节点扁平化 Diff。
(4) 新特性
- Fragment: 多根节点支持。
- Teleport: 传送门。
- Suspense: 异步加载。
- CSS v-bind: 在 CSS 中使用 JS 变量。
(5) 周边生态
- Vite: 秒级启动的开发服务器。
- Pinia: 取代 Vuex,更简单的状态管理。
3. 移除特性 (Breaking Changes)
- 移除了
Filters (过滤器)。
- 移除了
$on, $off, $once (EventBus)。
- 改为
createApp 工厂模式,不再修改 Vue 原型。