這幾天補了下 Vue3.0 來龍去脈, 將歷屆Vue Conf 看了一遍,簡單整理成文字版奉獻給大家。
2018年
特性
效能提升一倍,記憶體減少一倍
原始碼
Proxy 徹底替換 Object.defineProperty 中的Setter、Getter
靜態程式碼渲染(減少JS執行時效能)
利用 Tree-Shaking 消除無用程式碼
TypeScript 支援更好
模組解藕
外掛化設計
Source Map(帶位置的Parser)
多端渲染支援
API
Observable、Effect 響應式資料監聽API , 跨元件共享狀態
RenderTrigger 除錯更新機制(元件更新觸發原因)
TS 支援(class、interface)
Hooks API 邏輯複用。 取代 mixins。
Time Slicing 。 主執行緒的任務太多,切分成一幀一幀,分給瀏覽器yield. 接收使用者的輸入。省去不需要的效能。
相容性
IE11, 新的版本,不支援Proxy 的情況, 給出提示。
2019年
問題
Proxy IE11 死而不僵
Vurtual DOM 重寫: 核心價值表達裡。 舊樹新樹的比對。 遍歷整個樹。 元件層面上,效能有待最佳化。
Diff 演算法, 提升Diff 5、6倍的提升
傳統的 Diff 演算法。React 動態JS, 使用時間分片。相容render function
更強的表達力,無法取代。生成程式碼更簡潔。
動態靜態的切分。切成一個一個每一個靜態的塊 block tree。減少無謂的遍歷。
TypeScript
撤銷Class API, 裝飾器不穩定。沒有優勢
API
function-based API
React Hooks 只調用一次、內聯回撥、閉包問題。
2020 年
callback 2018 - 2019
完成 RFCS
新的編譯器
支援SSR
結束Beta
新的編譯器
完整source map 支援
基於外掛轉換管道
layered design for higher order 編譯器