Appearance
Vue(2 与 3)
Vue 这一部分不准备继续写成一篇“大单页”,而是拆成几块更容易看清的内容:
- Vue2 本身是什么
- Vue3 本身是什么
- Vue2 和 Vue3 到底差在哪里
- 状态管理为什么会走到
Vuex和Pinia - 路由层为什么需要
Vue Router - 底层 runtime、compiler 和
@vue/compiler-sfc分别在做什么
可以记成:Vue 不是一组零散 API,而是一套围绕组件、响应式、状态、页面导航和编译链路组织前端应用的框架体系。
1. 这一部分会怎么拆
当前 Vue 目录先按下面 8 部分展开:
- 当前这篇目录页,负责建立 Vue 知识地图和阅读顺序
- Vue2:经典组件化框架与 Options API
- Vue3:响应式重构、Composition API 与现代工程化
- Vue2 与 Vue3 对比:响应式、组织方式与工程边界
- Vuex 与 Pinia:状态管理的演进、差异与选型
- Vue Router:前端路由、导航守卫与页面组织
- Vue 底层库与编译器生态
- Vue 的虚拟 DOM、diff 与渲染更新
2. 一条更适合理解 Vue 的主线
如果想系统一点地学 Vue,更适合按下面顺序理解:
- 先理解 Vue 为什么要用组件和响应式组织页面
- 再分清 Vue2 和 Vue3 代表的是两代不同设计
- 然后理解一个应用为什么会需要状态管理
- 再理解多页面视图切换为什么要交给路由系统
- 最后理解
.vue文件为什么能被编译成浏览器可运行代码
Vue 这条线真正想回答的,不是“某个 API 怎么背”,而是:
- 页面怎么拆成组件
- 数据变化为什么会驱动视图更新
- 组件之间怎么通信
- 多个页面怎么切换
- 全局状态怎么治理
- 模板和
.vue文件为什么能进入构建与运行链路 - 虚拟 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]这张图最重要的作用,是把几件容易混在一起的事情拆开:
- Vue 本体在做什么
- Vue2 和 Vue3 差异主要落在哪
- 路由和状态管理为什么会成为独立主线
- Vue 底层运行时和编译器为什么也值得单独理解
4. 当前阶段最该先掌握什么
如果是第一轮建立知识地图,最值得先掌握的是:
- Vue2 和 Vue3 的定位差异
- 响应式系统为什么存在
computed和watch的边界- 组件通信的基本方式
Vuex和Pinia为什么会出现Vue Router为什么不是“页面跳转插件”,而是应用结构的一部分@vue/reactivity、runtime、compiler、@vue/compiler-sfc分别在做什么- Vue2 和 Vue3 的
render -> vnode -> patch主线怎么理解
5. 一张阅读顺序表
| 阅读目标 | 看哪篇 |
|---|---|
| 先建立 Vue 基本认知 | Vue2 |
| 想看现代 Vue 项目主线 | Vue3 |
| 想系统回答版本差异 | Vue2 与 Vue3 对比 |
| 想弄清 Vuex 和 Pinia | 状态管理:Vuex 与 Pinia |
| 想弄清页面切换和路由组织 | Vue Router |
| 想弄清底层包和编译链路 | Vue 底层库与编译器生态 |
| 想系统理解 Vue 的虚拟 DOM | Vue 的虚拟 DOM、diff 与渲染更新 |
6. 这部分最容易讲偏的地方
最常见的问题通常不是“完全不会”,而是:
- 只会背
ref、reactive、watch - 只会说 Vue3 更快
- 把 Vuex、Pinia、Vue Router 都当成附属工具
- 对
@vue/compiler-sfc、runtime、compiler 这类底层包完全没有概念 - 只会说“虚拟 DOM 更快”,但说不清 Vue 自己的
render -> vnode -> patch - 不能把组件、路由、状态和编译链路放到一个完整应用里理解
更值得建立的是这套认识:Vue 是框架本体,Vue Router 负责页面结构与导航,Vuex / Pinia 负责共享状态治理,而 runtime 与 compiler 共同支撑 .vue 文件从源码到运行时的完整链路。
7. 后续还会继续往哪里扩
这一轮先补的是核心 8 篇。 后续如果继续扩,比较自然的方向包括:
- 组件设计与插槽
computed、watch与性能边界- Vue 工程化与脚手架
Nuxt- 组件库和 UI 生态
8. 小结
当前 Vue 目录最想建立的核心认识是:
- Vue2 和 Vue3 是两代设计思路
- Vue 不只是模板语法,而是组件、响应式、路由、状态管理和编译链路的组合体系
- Vue Router 和 Vuex / Pinia 不是边角料,而是应用结构的一部分
- Vue3 背后还有一条底层 runtime 与 compiler 生态主线
- Vue2 和 Vue3 的渲染更新,都离不开 Vue 自己的虚拟 DOM 主线
如果继续往下读,比较自然的顺序是: