第十七屆 優選

vue-js
從零到一打造 Vue3 響應式系統
heyrian

系列文章

DAY 11

Day 11 - Effect:Link 節點的複用實作

昨天我們發現了 Effect 的問題:當 effect 被重複觸發時,它會不斷重新收集依賴,導致依賴鏈表指數級增長。 要讓 effect 記住它「訂閱過誰」,...

DAY 12

Day 12 - Effect :多重依賴之指數觸發重現

昨天我們解決了單一依賴所導致的指數增長問題。然而,在真實的開發場景中,一個 effect 函式往往需要依賴多個響應式變數,現在我們試著新增多個依賴,在範例中加...

DAY 13

Day 13 - Effect:多重依賴之節點復用解方

昨天,我們知道當 effect 函式依賴多個響應式變數時,會觸發指數級更新。 觀察我們之前的做法: run() 函式首先會將 depsTail 設為 un...

DAY 14

Day 14 - Effect:清理依賴的場景

在解決了鏈表節點指數增長的問題後,我們還需要注意依賴的有效性。 effect 的執行路徑可能因為條件判斷或程式邏輯不同而改變,導致這次執行中不再需要某些依賴。...

DAY 15

Day 15 - Effect:依賴清理實作方案

在實際狀況,effect 函式內部的依賴,常因為條件分支(像是 if...else)而發生變化,這種情況稱為「動態依賴」。 動態依賴會帶來一個問題:在某次執行中...

DAY 16

Day 16 - 效能處理:LinkPool

昨天,我們完成了「依賴清理」機制,讓 effect 能夠正確處理動態變化的依賴關係。然而,這也帶來了一個新的效能問題:當依賴頻繁變化時,系統需要不斷地建立和刪除...

DAY 17

Day 17 - 效能處理:無限循環

打造響應式系統時,容易遇到的狀況,就是 effect 在執行期間同時「讀取」又「寫入」同一個依賴,這會造成自我觸發(self-trigger)。 effect...

DAY 18

Day 18 - Reactive:深入 Proxy 的設計思路

在之前的文章中,我們已經完成了 ref 實作,它能將原始值包裝成響應式物件。現在,我們要接續完成另一部分的響應式系統核心:reactive 函式。我們的目標是...

DAY 19

Day 19 - Reactive:reactive 的基礎實作

上一次我們提到: 每個物件的每個屬性都需要自己的 Dep。 如何建立 target.a → Dep 的對應關係? 如何在不污染原始物件的情況下儲存這個關係?...

DAY 20

Day 20 - Reactive:reactive 極端案例

我們完成 reactive 的基本實踐後,接下來有幾個有可能會發生的情況: 原始物件傳入 Reactive 物件 Reactive 物件傳入 Reactiv...