Skip to content

进阶 60 分钟动手实践 ​

AI 生成的附录

本附录由 GPT-5.5 根据 chibivue 原书内容起草。请将这条路线视为学习指南;原始章节与实现代码仍是权威依据。

这条路线适合已经熟悉 Vue、TypeScript 或框架内部机制的读者。它不从首次渲染开始按原书顺序阅读,而是沿着更新路径前进:状态发生变化、任务进入调度队列、组件重新渲染,编译器输出则为渲染器提供更准确的指令。

目标 ​

完成后,你应该能够追踪下面这条路径:

txt
状态变更 -> trigger -> 调度器 -> 组件更新 -> patch -> DOM 操作

你还应该知道编译器转换在这条运行时路径中处于什么位置。

0-6 分钟:选择可运行的快照 ​

阅读:

实践:

  • 打开 book/impls/20_basic_virtual_dom/040_scheduler 或更晚的实现快照。
  • 找到 renderer.ts、scheduler.ts、effect.ts 和 vnode.ts。

检查点:

  • 你已经找到能够解释大多数运行时更新的四个文件。

6-18 分钟:渲染器与带 key 的 patch ​

阅读:

实践:

  • 找到用于判断 VNode 是元素还是组件的分支。
  • 找到对子节点进行带 key patch 的函数。
  • 找到更新后 patch props 的位置。

检查点:

  • 你能说明 VNode 的哪些部分可以帮助渲染器选择快速路径。

18-30 分钟:调度器与响应式 ​

阅读:

实践:

  • 找到 trigger 收集 effect 的位置。
  • 找到组件更新进入队列而不是立即执行的位置。
  • 找到避免重复任务的位置。
  • 查看 computed 或 watch 如何改变 effect 的执行时机。

检查点:

  • 你能够区分“某个值发生了变化”和“DOM 已经更新”。调度器位于这两个事件之间。

30-42 分钟:组件更新接口 ​

阅读:

实践:

  • 找到组件实例的数据结构。
  • 找到 setup 的结果如何暴露给渲染函数。
  • 找到挂载或更新期间调用生命周期钩子的位置。
  • 找到插槽在渲染前被规范化的位置。

检查点:

  • 你可以把组件实例描述为运行时状态、props、setup 状态和渲染上下文的汇合点。

42-56 分钟:编译器为运行时做准备 ​

阅读:

实践:

  • 跟踪一个指令如何从 AST 节点变成生成的渲染代码。
  • 找到表达式被添加前缀,或根据渲染上下文求值的位置。
  • 比较 v-if 和 v-for:前者改变分支,后者改变列表形状。

检查点:

  • 你能够解释编译器转换如何生成随后由渲染器 patch 的 VNode 调用。

56-60 分钟:选择下一项深入学习内容 ​

选择一项:

基于 MIT 许可证发布。