深入熟悉 Vue 3 源码及其设计思路,通常可以按照以下 5 个系统化步骤进行:
Vue 3 源码为 monorepo 多包结构,使用的是 pnpm
+ Turbo
。
克隆源码:
git clone https://github.com/vuejs/core.git
cd core
pnpm install
编译调试:
pnpm dev
启动 playground:
cd packages/vue
pnpm dev
访问 playground
,可查看修改源码的实时效果。
reactivity
响应式系统源码位置:packages/reactivity/
重点文件:
reactive.ts
(响应式对象创建)effect.ts
(副作用追踪)baseHandlers.ts
(Proxy 核心处理器)track.ts
& trigger.ts
(依赖收集与更新)推荐顺序:
先看 effect.ts
→ 再看 reactive.ts
→ 然后是 handler 的实现
runtime-core
渲染引擎 & 组件系统源码位置:packages/runtime-core/
createApp -> mount -> render -> patch -> mountElement / patchElement
component.ts
(组件创建与实例)renderer.ts
(VNode 渲染)vnode.ts
(VNode 定义)scheduler.ts
(调度机制)compiler-core
模板编译器源码位置:packages/compiler-core/
template -> parse -> transform -> generate -> render function
parse.ts
:将模板编译为 ASTtransform.ts
:AST 转换codegen.ts
:代码生成 render 函数shared/
与 utils/
通用工具函数,比如 isObject
、hasOwn
、ShapeFlags
常量标志等,是理解组件类型与状态管理的关键。
reactivity
中的 track/trigger
,调试副作用函数是否触发playground
中写测试组件,验证响应式或组件生命周期行为响应式系统 → 组件挂载流程 → 编译器原理 → 生命周期和调度 → 源码调试 → 自主实现 mini-vue