Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[MOPCON 2019] Vue.js 3.0 與 Composition API 的變革

Kuro Hsu
October 20, 2019

[MOPCON 2019] Vue.js 3.0 與 Composition API 的變革

從去年開始,Vue 3.0 的消息就不斷傳出,直到今年 Vue.js 的作者尤雨溪在 VueConf 上海的演講,讓我們終於可以看見 Vue 3.0 一個比較完整的樣貌。

而其中改變最多,也是爭議最大的一個新特性,當屬 Composition API 了。

這場議程中,我將為各位介紹 Class API 被取代的原因,以及 Vue 3.0 為什麼寧可延後推出,也要改用 Composition Functions? 它解決了什麼問題? 以及它帶來的優勢。

Kuro Hsu

October 20, 2019
Tweet

More Decks by Kuro Hsu

Other Decks in Technology

Transcript

  1. Vue 3.0 發展近況 • 10/05 發布 pre-alpha 原始碼 • 預計

    Q1 2020 推出正式版本 • Vue Roadmap - https://github.com/vuejs/vue/ projects/6
  2. Class API • 為了了增強與 TypeScript 的⽀支援 • 與現有 API 的相容性差異異太⼤大

    • 瀏覽器對原⽣生 Class API 的⽀支援還不夠完整 • 標準對 class fields, decorators 等提案還不穩定
  3. Class API • 為了了增強與 TypeScript 的⽀支援 • 與現有 API 的相容性差異異太⼤大

    • 瀏覽器對原⽣生 Class API 的⽀支援還不夠完整 • 標準對 class fields, decorators 等提案還不穩定 CANCELED
  4. ! Composition API • 先前叫 function-based API • 以「組合代替繼承」來來實作元件功能的複⽤用 •

    對 TypeScript 類型推導的⽀支援更更好 • Tree-shaking friendly、編譯後程式碼更更容易易被壓縮
  5. setup ( ) • 將共⽤用邏輯放在 setup 函式 • setup( )

    沒有 this • 透過 context 參參數取得原本在 this 對應的屬性 • 將需要暴暴露的屬性 return 出去
  6. 與 React Hooks 對比 • 兩兩者同樣為了了處理理邏輯組合與複⽤用問題 • Vue setup( )

    只會在 init 被呼叫⼀一次 • 沒有 State Hooks 的閉包陷阱 • 沒有內聯聯函式 callback 導致⼦子組件不斷被觸發更更新問題
  7. • 官⽅方保證 2.x -> 3.x ,完全相容現有 API • 加強對 TypeScript

    ⽀支援 !== 只能⽤用 TypeScript • 更更多的是針對底層的改寫,對多數開發者來來說沒有明顯差距