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 原型。