Skip to content

Vue(2 与 3)

Vue 这一部分不准备继续写成一篇“大单页”,而是拆成几块更容易看清的内容:

  1. Vue2 本身是什么
  2. Vue3 本身是什么
  3. Vue2 和 Vue3 到底差在哪里
  4. 状态管理为什么会走到 VuexPinia
  5. 路由层为什么需要 Vue Router
  6. 底层 runtime、compiler 和 @vue/compiler-sfc 分别在做什么

可以记成:Vue 不是一组零散 API,而是一套围绕组件、响应式、状态、页面导航和编译链路组织前端应用的框架体系。

1. 这一部分会怎么拆

当前 Vue 目录先按下面 8 部分展开:

  1. 当前这篇目录页,负责建立 Vue 知识地图和阅读顺序
  2. Vue2:经典组件化框架与 Options API
  3. Vue3:响应式重构、Composition API 与现代工程化
  4. Vue2 与 Vue3 对比:响应式、组织方式与工程边界
  5. Vuex 与 Pinia:状态管理的演进、差异与选型
  6. Vue Router:前端路由、导航守卫与页面组织
  7. Vue 底层库与编译器生态
  8. Vue 的虚拟 DOM、diff 与渲染更新

2. 一条更适合理解 Vue 的主线

如果想系统一点地学 Vue,更适合按下面顺序理解:

  1. 先理解 Vue 为什么要用组件和响应式组织页面
  2. 再分清 Vue2 和 Vue3 代表的是两代不同设计
  3. 然后理解一个应用为什么会需要状态管理
  4. 再理解多页面视图切换为什么要交给路由系统
  5. 最后理解 .vue 文件为什么能被编译成浏览器可运行代码

Vue 这条线真正想回答的,不是“某个 API 怎么背”,而是:

  1. 页面怎么拆成组件
  2. 数据变化为什么会驱动视图更新
  3. 组件之间怎么通信
  4. 多个页面怎么切换
  5. 全局状态怎么治理
  6. 模板和 .vue 文件为什么能进入构建与运行链路
  7. 虚拟 DOM 在 Vue 的渲染更新里具体扮演什么角色

3. 一张总图先建立认知

mermaid
flowchart TD
    A[Vue 应用] --> B[组件系统]
    A --> C[响应式系统]
    A --> D[路由系统]
    A --> E[状态管理]

    B --> B1[模板]
    B --> B2[props emits slots]

    C --> C1[Vue2 defineProperty]
    C --> C2[Vue3 Proxy]

    D --> D1[声明路由]
    D --> D2[导航守卫]
    D --> D3[嵌套路由]

    E --> E1[Vuex]
    E --> E2[Pinia]

这张图最重要的作用,是把几件容易混在一起的事情拆开:

  1. Vue 本体在做什么
  2. Vue2 和 Vue3 差异主要落在哪
  3. 路由和状态管理为什么会成为独立主线
  4. Vue 底层运行时和编译器为什么也值得单独理解

4. 当前阶段最该先掌握什么

如果是第一轮建立知识地图,最值得先掌握的是:

  1. Vue2 和 Vue3 的定位差异
  2. 响应式系统为什么存在
  3. computedwatch 的边界
  4. 组件通信的基本方式
  5. VuexPinia 为什么会出现
  6. Vue Router 为什么不是“页面跳转插件”,而是应用结构的一部分
  7. @vue/reactivity、runtime、compiler、@vue/compiler-sfc 分别在做什么
  8. Vue2 和 Vue3 的 render -> vnode -> patch 主线怎么理解

5. 一张阅读顺序表

阅读目标看哪篇
先建立 Vue 基本认知Vue2
想看现代 Vue 项目主线Vue3
想系统回答版本差异Vue2 与 Vue3 对比
想弄清 Vuex 和 Pinia状态管理:Vuex 与 Pinia
想弄清页面切换和路由组织Vue Router
想弄清底层包和编译链路Vue 底层库与编译器生态
想系统理解 Vue 的虚拟 DOMVue 的虚拟 DOM、diff 与渲染更新

6. 这部分最容易讲偏的地方

最常见的问题通常不是“完全不会”,而是:

  1. 只会背 refreactivewatch
  2. 只会说 Vue3 更快
  3. 把 Vuex、Pinia、Vue Router 都当成附属工具
  4. @vue/compiler-sfc、runtime、compiler 这类底层包完全没有概念
  5. 只会说“虚拟 DOM 更快”,但说不清 Vue 自己的 render -> vnode -> patch
  6. 不能把组件、路由、状态和编译链路放到一个完整应用里理解

更值得建立的是这套认识:Vue 是框架本体,Vue Router 负责页面结构与导航,Vuex / Pinia 负责共享状态治理,而 runtime 与 compiler 共同支撑 .vue 文件从源码到运行时的完整链路。

7. 后续还会继续往哪里扩

这一轮先补的是核心 8 篇。 后续如果继续扩,比较自然的方向包括:

  1. 组件设计与插槽
  2. computedwatch 与性能边界
  3. Vue 工程化与脚手架
  4. Nuxt
  5. 组件库和 UI 生态

8. 小结

当前 Vue 目录最想建立的核心认识是:

  1. Vue2 和 Vue3 是两代设计思路
  2. Vue 不只是模板语法,而是组件、响应式、路由、状态管理和编译链路的组合体系
  3. Vue Router 和 Vuex / Pinia 不是边角料,而是应用结构的一部分
  4. Vue3 背后还有一条底层 runtime 与 compiler 生态主线
  5. Vue2 和 Vue3 的渲染更新,都离不开 Vue 自己的虚拟 DOM 主线

如果继续往下读,比较自然的顺序是:

  1. Vue2:经典组件化框架与 Options API
  2. 再看 Vue3:响应式重构、Composition API 与现代工程化
  3. 然后进入 Vue2 与 Vue3 对比
  4. 然后补 Vuex 与 PiniaVue Router
  5. 再看 Vue 底层库与编译器生态
  6. 最后看 Vue 的虚拟 DOM、diff 与渲染更新

基于 VitePress 构建的个人技术笔记。