------ 采用 monorepo 管理项目,目录结构如下:
.
├── packages
│ ├── reactivity
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── effect.ts
│ │ │ ├── ref.ts
│ │ │ ├── computed.ts
│ │ │ ├── reactive.ts
│ │ ├── package.json
│ │ └── README.md
│ ├── shared
│ │ ├── src
│ │ │ ├── index.ts
reactivity
:存放响应式模块的源码shared
:存放共享模块的源码
effect
:实现依赖收集和自动派发ref
:实现响应式数据computed
:实现计算属性reactive
:实现响应式对象
effect
:通过effect
函数包裹的函数,会被收集到依赖收集器中,并在函数执行时自动派发computed
:通过computed
函数包裹的函数,会被收集到依赖收集器中,并在函数执行时自动派发reactive
:通过reactive
函数包裹的对象,会被收集到依赖收集器中,并在对象属性被访问时自动派发
effect
:在函数执行时,会自动收集依赖,并触发依赖收集器中的依赖,使得依赖函数重新执行computed
:在函数执行时,会自动收集依赖,并触发依赖收集器中的依赖,使得依赖函数重新执行reactive
:在对象属性被访问时,会自动收集依赖,并触发依赖收集器中的依赖,使得依赖函数重新执行
- 响应式模块:实现了数据响应式的功能,包括
effect
、ref
、computed
、reactive
四个模块 - 依赖收集:实现了依赖收集功能,包括
effect
、computed
、reactive
、ref
四个模块 - 自动派发:实现了自动派发功能,包括
effect
、computed
、reactive
、ref
四个模块 - 采用 monorepo 管理项目,目录结构清晰,便于维护
- 代码实现清晰,易于理解
- 注释详细,易于理解