iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Vue.js

從零到一打造 Vue3 響應式系統 系列

這是一個以 Vue 3 響應式系統為核心的學習與探索紀錄的系列文章。

我嘗試從零開始,重現 Vue 3 的響應式機制,並在過程中分享自己的思考與整理過程。希望能藉由這個系列,讓自己更深入掌握 Vue 3 的底層原理。

鐵人鍊成 | 共 30 篇文章 | 11 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21 - Computed:即時更新基礎實作

今天我們要在保持既有鏈表架構不變的前提下,來實作 computed 的惰性計算 + 快取(dirty 旗標)與調度邏輯。 範例演示 <!DOCTYPE...

2025-09-30 ‧ 由 heyrian 分享
DAY 22

Day 22 - Computed:深入緩存機制實作

在上一篇文章中,我們提到將透過「緩存」的機制來解決 computed 在訪問時重複執行的問題。 在 Vue 3 的原始碼裡,computed 是靠一個「髒值標...

2025-10-01 ‧ 由 heyrian 分享
DAY 23

Day 23 - Watch:基礎實作

watch 是 Vue 非常重要的一個 API,它允許開發者在響應式資料發生變化時,執行特定的副作用(side effects)。這些副作用可以是異步行為,像...

2025-10-02 ‧ 由 heyrian 分享
DAY 24

Day 24 - Watch:Options

Watch Options 我們常用的選項: immediate:初始化馬上執行一次 deep:深層監聽 once:只執行一次,就停止監聽 我們先寫...

2025-10-03 ‧ 由 heyrian 分享
DAY 25

Day 25 - Watch :清理 SideEffect

watch 的一個核心用途是在響應式資料發生改變時,執行 Side Effect。 然而,當 Side Effect 是非同步或需要手動清理時,就會出現一個常見...

2025-10-04 ‧ 由 heyrian 分享
DAY 26

Day 26 - 陣列長度變更處理

在我們建構響應式系統的過程中,雖然對於原生 JavaScript 物件的處理已經算蠻完善,但陣列 (Array) 與普通物件的屬性不同,陣列的 length...

2025-10-05 ‧ 由 heyrian 分享
DAY 27

Day 27 - toRef、toRefs、ProxyRef、unref

響應式系統之中reactive 能夠將一個物件轉換為深層的響應式物件,但是在開發過程中我們時常會需要用到解構賦值,這時候會導致響應性遺失。 問題解析 <...

2025-10-06 ‧ 由 heyrian 分享
DAY 28

Day 28 - shallowRef、shallowReactive

ref 與 reactive 都屬於深層響應的 API 。它們會遞迴地將內部所有巢狀物件都轉換為響應式代理 。多數情況下非常方便,但當處理大型資料結構時,這種...

2025-10-07 ‧ 由 heyrian 分享
DAY 29

Day 29 - readonly: 資料唯讀保護實作

在開始 readonly 之前,我們先講一下 Proxy 的補充知識: Proxy Proxy 是實現 reactive、readonly 等功能的核心。它會...

2025-10-08 ‧ 由 heyrian 分享
DAY 30

Day 30 - 完賽心得

我們回顧一下這三十天所學習到的: 目錄 環境 Day 2 - 基礎建設: Monorepo 與 pnpm Workspace 環境搭建 響應式基礎 Day 3...

2025-10-09 ‧ 由 heyrian 分享