Vuejs 3.0 在北京時間2020年9月 19 日凌晨,終於發佈了 3.0 版本,代號:One Piece
以下爲 Vuejs Release 3.0 機器翻譯文章,原文 v3.0.0 One Piece。
Vue 3.0 發佈
今天,我們很榮幸地宣佈 Vue.js 3.0“One Piece”的正式發佈。這個框架的新的主要版本提供了改進的性能、更小的捆綁大小、更好的 TypeScript 集成、用於處理大規模用例的新 API,以及爲框架未來的長期迭代奠定了堅實的基礎。
3.0 版本代表了兩年多的開發努力,包括 30+ RFC,2600 多個提交,99 個貢獻者的 628 個 PR,以及核心倉庫之外的大量開發和文檔工作。在此,我們要對我們的團隊成員、貢獻者的拉取請求、贊助商和支持者的資金支持,以及更廣泛的社區參與我們的設計討論併爲預發佈版本提供反饋表示最深切的感謝。Vue 是一個獨立的項目,是爲社區而創建的,也是由社區來維持的,如果沒有您的一貫支持,Vue 3.0 是不可能實現的。
進一步推進“漸進式框架”概念。
Vue 從一開始就有一個簡單的使命:成爲一個任何人都能快速學會的平易近人的框架。隨着我們用戶羣的增長,框架的範圍也在不斷擴大,以適應不斷增長的需求。隨着時間的推移,它演變成了我們所說的“漸進式框架”:一個可以逐步學習和採用的框架,同時隨着用戶應對越來越多的需求場景而提供持續的支持。
今天,我們在全球擁有 130 多萬用戶 *,我們看到 Vue 被應用於各種不同的場景,從在傳統的服務器渲染的頁面上添加交互性,到擁有數百個組件的完整的單頁應用。Vue 3 將這種靈活性進一步提升。
分層內部模塊
Vue 3.0 核心仍然可以通過一個簡單的 <script>
標籤來使用,但它的內部結構已經被重新編寫成一個解耦模塊的集合。新的架構提供了更好的可維護性,並允許終端用戶通過 tree-shaking 減少多達一半的運行時大小。
這些模塊還暴露了底層的 API,解鎖了許多高級用例。
編譯器支持自定義 AST 轉換,用於構建時的自定義 (例如構建時的 i18n)。
核心運行時提供了一級的 API,用於創建針對不同渲染目標 (如原生移動端、WebGL 或終端) 的自定義渲染器。默認的 DOM 渲染器也是使用相同的 API 構建的。
@vue/reactivity
模塊導出的函數可以直接訪問 Vue 的反應性系統,並且可以作爲一個獨立的包使用。它可以與其他模板解決方案 (如 lit-html) 配對使用,甚至在非 UI 場景中使用。
解決規模問題的新 API
在 Vue 3 中,基於對象的 2.x API 基本沒有變化。不過,3.0 還引入了 Composition API——一套新的 API,旨在解決 Vue 在大規模應用中的使用痛點。組成 API 建立在反應性 API 之上,實現了類似於 React 鉤子的邏輯組成和重用,比 2.x 基於對象的 API 更靈活的代碼組織模式和更可靠的類型推理。
Composition API 也可以通過 @vue/composition-api 插件與 Vue 2.x 一起使用,目前已經有適用於 Vue 2 和 3 的組成 API 實用庫 (如 vueuse、vue-composable)。
性能改進
Vue 3 與 Vue 2 相比,在捆綁大小 (tree-shaking 時減少了 41%)、初始渲染 (快了 55%)、更新 (快了 133%) 和內存使用 (少了 54%) 方面都有顯著的性能提升。
在 Vue 3 中,我們採取了“compiler-informed 虛擬 DOM”的方法:模板編譯器執行積極的優化,並生成渲染函數代碼,以提升靜態內容,爲綁定類型留下運行時提示,最重要的是,扁平化模板內的動態節點,以減少運行時遍歷的成本。因此,用戶可以獲得兩全其美的效果:從模板中獲得編譯器優化的性能,或者在用例需要時通過手動渲染函數直接控制。
改進的 TypeScript 集成
Vue 3 的代碼庫是用 TypeScript 編寫的,具有自動生成,測試和捆綁的類型定義,因此它們始終是最新的。Composition API 可以很好地處理類型推斷。Vetur 是我們的官方 VSCode 擴展,現在利用 Vue 3 改進的內部鍵入功能支持模板表達式和 props 類型檢查。哦,如果您願意,Vue 3 的打字完全支持 TSX。
實驗特性
我們爲單文件組件 (SFC,即 .vue
文件) 提出了兩個新特性:
這些功能已在 Vue 3.0 中實現並可用,但僅出於收集反饋的目的而提供。在 RFC 合併之前,它們將保持試驗狀態。
我們還實現了一個當前未公開的 <Suspense>
組件,該組件允許在初始渲染或分支開關上等待嵌套的異步依賴項 (異步組件或具有 setup()
的組件)。我們正在與 Nuxt.js 團隊一起測試和迭代此功能 (Nuxt 3 即將發佈),並且很可能會在 3.1 版中將其固化。
分階段發佈流程
Vue 3.0 的發佈標誌着該框架的全面就緒。儘管某些框架子項目可能仍需要進一步的工作才能達到穩定狀態 (特別是 devtools 中的路由器和 Vuex 集成),但我們認爲今天使用 Vue 3 啓動新的綠色項目是合適的。我們還鼓勵圖書館作者開始升級您的項目以支持 Vue 3。
請查閱 Vue 3 工具庫指南以獲取有關所有框架子項目的詳細信息。
遷移和 IE11 支持
由於時間限制,我們已推遲了遷移版本 (具有 v2 兼容行爲的 v3 版本 + 遷移警告) 和 IE11 版本,並計劃在 2020 年第四季度重點關注它們。因此,計劃遷移現有 v2 應用程序的用戶或要求 IE11 支持人員此時應意識到這些限制。
下一步
發佈後的短期內,我們將專注於:
遷移版本
IE11 支持
新 devtools 中的 Router 和 Vuex 集成
Vetur 中模板類型推斷的進一步改進
目前,面向 Vue 3 和 v3 的項目的文檔網站,GitHub 分支和 npm dist 標籤將保持在下一個狀態。這意味着 npm install vue
仍將安裝 Vue 2.x,npm install vue@next
將安裝 Vue 3。****我們計劃在 2020 年底之前將所有文檔鏈接,分支和 dist 標籤切換爲默認值 3.0****。
同時,我們已經開始計劃 2.7,這將是 2.x 發行版的最後一個計劃的次要發行版。2.7 將向後移植來自 v3 的兼容改進,併發出有關 v3 中已刪除/更改的 API 使用情況的警告,以幫助潛在的遷移。我們計劃在 2021 年第一季度開發 2.7,它將在發佈後直接變爲 LTS,預計有 18 個月的維護時長。
嘗試一下
要了解有關 Vue 3.0 的更多信息,請訪問我們的新文檔網站。如果您是現有的 Vue 2.x 用戶,請直接轉到遷移指南。
根據 Google 報告的每週 Vue Devtools Chrome 擴展活躍用戶。
(另外:Vue 3 官方中文文檔倉庫在這裏)