Skip to content

初學者 30 分鐘動手實作 ​

AI 產生的附錄

本附錄由 GPT-5.5 根據 chibivue 原書內容起草。請將這條路線視為學習指南;原始章節與實作程式碼仍是權威依據。

這條路線協助你完成一個雖小卻完整的循環:建立應用程式、渲染按鈕、更新狀態,並理解為什麼需要編譯器。它延續了15 分鐘編寫 Vue.js 的精神,但保留了更充裕的理解時間。

目標 ​

完成後,你應該能夠解釋下面這條鏈路:

txt
createApp -> 渲染函式 -> VNode -> patch -> 響應式狀態 -> effect -> 重新渲染

你不需要理解每個邊界情況。目標是看清各個部分如何相互銜接。

0-5 分鐘:建立最小心智模型 ​

閱讀:

實作:

  • 建立或開啟一個 chibivue playground 專案。
  • 找到匯出這個微型 Vue 風格 API 的檔案,通常是 packages/index.ts。
  • 記住一項原則:這條路線中的每項功能都可以刻意採用樸素實作。

檢查點:

  • 即使所有程式碼都放在同一個檔案中,你也知道公開 API、渲染器、響應式系統和編譯器程式碼分別位於哪裡。

5-10 分鐘:createApp 與 h ​

閱讀:

實作:

  • 編寫或查看一個接收 setup 和 render 的 createApp 函式。
  • 編寫或查看一個回傳普通物件的 h 函式。
  • 確保 VNode 只包含示範所需的資訊:標籤、事件和子節點。

檢查點:

  • 你能說明 Vue 為什麼先渲染一個物件,而不是到處直接編寫 DOM 操作程式碼。

10-17 分鐘:將 VNode patch 到 DOM ​

閱讀:

實作:

  • 將 VNode 轉換為實際的 DOM 元素。
  • 綁定點擊事件處理器。
  • 將元素插入 mount 所選擇的容器中。

檢查點:

  • 渲染函式能夠產生 VNode,而 patch 能讓該 VNode 顯示在瀏覽器中。

17-23 分鐘:讓狀態具有響應性 ​

閱讀:

實作:

  • 查看相依性儲存:哪個 effect 相依於哪個屬性?
  • 在點擊事件處理器中更新狀態。
  • 確認狀態變化時渲染 effect 會再次執行。

檢查點:

  • 你可以把 track 解釋為「記住誰讀取了這個值」,把 trigger 解釋為「重新執行在意這個值的程式碼」。

23-28 分鐘:用模板取代手寫渲染函式 ​

閱讀:

實作:

  • 查看一個小型模板如何變成渲染函式。
  • 刻意限制編譯器的範圍:支援一個按鈕、一個事件和一次插值就足夠了。

檢查點:

  • 你能說明編譯器並不是另一套神祕系統。它只是產生執行期已經知道如何執行的渲染函式。

28-30 分鐘:完成循環 ​

口頭回答或記下以下問題:

  • h 回傳什麼物件?
  • 誰會呼叫 patch?
  • 什麼會讓 render 再次執行?
  • 為什麼這個微型實作需要 Vite 外掛才能支援 SFC?

下一條路線:

基於 MIT 許可證發布。