Vue.js 3.0 "One Piece" 已正式發佈,此框架新的主要版本提供了更好的性能、更小的捆綁包體積、更好的 TypeScript 集成、用於處理大規模用例的新 API,併爲框架將來的長期迭代奠基了堅實的基礎。vue
3.0 版本的開發週期長達兩年多,期間產生了 30+ RFCs、2600+ commits、628 pull requests,以及核心倉庫以外的大量開發和文檔工做。react
Vue 3.0 的發佈標誌着此框架總體上已處於可用狀態。儘管框架的某些子項目可能仍須要進一步的開發才能達到穩定狀態(特別是 devtools 中的路由和 Vuex 集成),不過如今仍然是開始使用 Vue 3 啓動新項目的合適時機。官方還鼓勵庫做者如今能夠開始升級項目以支持 Vue 3。web
分層內部模塊 (Layered internal modules)npm
Vue 3.0 core 仍然能夠經過<script>
標籤進行使用,但其內部架構已被完全重寫爲一組解耦的模塊。新架構提供了更好的可維護性,並容許使用者經過 tree-shaking 來減小多達一半的 runtime 大小。編程
這些模塊還將許多底層 API 暴露出來,可用於許多高級用例:api
編譯器爲定製 build-time 提供了對自定義 AST 轉換的支持(例如 build-time i18n)微信
內核 runtime 提供了優先級最高的 API,用於建立針對不一樣渲染目標(例如原生移動設備、WebGL 或終端)的自定義渲染器。默認 DOM 渲染器使用相同的 API 構建架構
@vue/reactivity
模塊導出的函數能夠直接訪問 Vue 的 reactivity 系統,其自己也能夠做爲一個獨立的程序包使用。它還能夠與其餘模板解決方案(例如 vue-lit)搭配使用,甚至能夠在非 UI 場景中使用app
用於處理大規模用例的新 API框架
在 Vue 3 中,基於對象的 2.x API 基本沒有變化。不過 3.0 還引入了 Composition API,旨在解決 Vue 在大型應用程序中的使用痛點。Composition API 構建於 reactivity API 之上,能夠實現相似於 React 鉤子(React hooks)的邏輯組合和重用,與 2.x 基於對象的 API 相比,擁有更靈活的代碼組織模式和更可靠的類型推導。
經過 @vue/composition-api 插件,Composition API 還能夠與 Vue 2.x 搭配使用,而且目前已經有適用於 Vue 2 和 3 的 Composition API 實用程序庫(例如 vueuse,vue-composable)。
提高性能
與 Vue 2 相比,Vue 3 在捆綁包體積(經過 tree-shaking 減少約 41% 大小)、初始渲染(速度提高約 55%)、更新(速度提高約 133%)和內存使用率(下降約 54%)等方面有了顯著的性能提高。
Vue 3 採用了"compiler-informed Virtual DOM"的方法:模板編譯器執行激進的優化並生成渲染函數代碼,以提高靜態內容訪問速度,爲綁定類型留下 runtime 提示。最重要的是,將內部的動態節點扁平化處理,以下降 runtime 遍歷的成本。所以,用戶能夠得到一箭雙鵰的效果:經過模板優化編譯器的性能,或者在用例須要時經過手動渲染函數直接控制。
改進與 TypeScript 的集成
Vue 3 使用 TypeScript 編寫,具備自動生成、測試和捆綁的類型定義等特性。Composition API 可與類型推導很好地搭配使用。Vetur,Vue 3 的官方 VSCode 擴展,如今支持模板表達式,以及利用 Vue 3 改進的內部類型進行 props 類型檢查。
實驗性功能
爲單文件組件(SFC, Singe-File Components),即 .vue 文件提供了兩項新特性:
<script setup>: 用於在 SFC 中使用 Composition API 的語法糖
<style vars>: SFC 中狀態驅動的 CSS 變量
上述已在 Vue 3.0 中實現並可用,但僅出於收集反饋的目的而提供。在合併 RFC 以前,它們將保持實驗性狀態。
此外還實現了一個當前未記錄的<Suspense>
組件,該組件容許在初始渲染或分支切換時等待嵌套的異步依賴項(異步組件或包含async setup()
的組件)。目前正在與 Nuxt.js 團隊一塊兒測試和迭代此功能(即將在 Nuxt 3發佈),而且可能會在 3.1 中到達穩定。
下一步
發佈後的短時間內,開發團隊將專一於:
版本遷移
支持 IE11
新 devtools 中的路由和 Vuex 集成
對 Vetur 中模板類型推導的進一步改進
目前,Vue 3 和 v3-targeting 項目的文檔網站、GitHub 分支和 npm dist 標籤將保持 next-denoted 狀態。這意味着使用npm install vue
命令仍會安裝 Vue 2.x,而要安裝 Vue 3 需使用npm install vue@next
命令。官方計劃在 2020 年末前將全部的 doc 連接、分支和 dist 標籤都切換爲默認 3.0。
同時,團隊已開始啓動 2.7 的開發工做計劃,這將是 2.x 的最後一個次要版本。2.7 將向後移植來自 v3 的兼容改進,並會提示有關 v3 中已刪除/更改的 API 使用狀況的警告。團隊表示計劃在 2021 年第一季度開發 2.7,發佈後將直接變爲 LTS 版本,具備 18 個月的維護週期。
推薦閱讀:
VS Code · 編程開發 · 業界資訊
本文分享自微信公衆號 - 玩轉VS Code(vs_code)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。