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 許可證發布。