Skip to content

Vue 3 概述 ​

Vue 3 的核心升级 ​

Vue 3 于 2020 年 9 月发布,是一次底层重写。两个关键词:更快、更小。

维度升级内容
响应式Object.defineProperty → Proxy
APIOptions API + Composition API
编译器静态提升、PatchFlag 靶向更新
运行时Block Tree、虚拟 DOM 重写
架构Flow → TypeScript、Monorepo
体积Tree-shaking 友好,按需引入
组件Fragment、Teleport、Suspense
生态Vite、VueUse、Pinia(取代 Vuex)

源码目录对比 ​

Vue 2 (vue2-source/src/)       Vue 3 (vue3-source/packages/)
├── core/                       ├── reactivity/        ← 独立响应式包
│   ├── observer/               ├── runtime-core/      ← 平台无关运行时
│   ├── instance/               ├── runtime-dom/       ← DOM 运行时
│   └── vdom/                   ├── compiler-core/     ← 核心编译器
├── compiler/                   ├── compiler-dom/      ← DOM 编译器
├── platforms/web/              ├── compiler-sfc/      ← SFC 编译器
└── shared/                     └── shared/            ← 工具函数

Vue 3 采用 Monorepo 架构,每个包可独立发布、独立使用。

快速对比 ​

js
// ========== Vue 2 ==========
new Vue({
  data() {
    return { count: 0 }
  },
  methods: {
    increment() { this.count++ }
  }
})

// ========== Vue 3 ==========
import { createApp, ref } from 'vue'

createApp({
  setup() {
    const count = ref(0)
    const increment = () => count.value++
    return { count, increment }
  }
}).mount('#app')

学习路线建议 ​

Vue 3 学习路径:
1. 响应式系统(Proxy 原理)     ← 最大变化
2. Composition API(setup、ref、reactive)
3. 编译器改进(PatchFlag、静态提升)
4. 运行时优化(Block Tree)
5. 新组件(Teleport、Suspense)

基于 Vue 2.7 & Vue 3.4 源码