視頻地址:Design Principles of Vue 3.0 by Evan You or Design Principles of Vue 3.0前端
視頻主要介紹 Vue 3.0 設計背後的意圖。vue
Vue 但願儘量知足不一樣用戶羣體的不一樣需求,但願提供用戶低門檻、易用、靈活、高可擴展、功能強大、體積感人的框架,也但願框架自己易維護。設計 Vue 3.0 時,框架開發者時時刻刻面臨着在這些需求間進行取捨,求得平衡。node
兼顧低門檻與可擴展,以知足非專業前端工程師的建站需求及建立高複雜度項目的需求。數組
CDN build & Vue CLI瀏覽器
使用 TypeScript:性能優化
優勢:前端工程師
缺點:框架
在 Vue 3.0 中,不強制要求用戶使用 TypeScript,TypeScript 用戶和 JavaScript 用戶都能從 IDE 插件提供的功能中獲益。ide
Vue 3.0 但願成爲一個包容性的框架,適用於任何想用 Vue 的用戶。函數
開發者能夠選擇本身喜歡的方式組織代碼。但 Template 將有利於 Virtual DOM 的性能優化。
每次視圖更新,必須遍歷整個 Virtual DOM 樹,找到變化的 node ,這其實也是某種意義上的暴力髒檢查。
Template 是具備語法約束模板字符串,比起 JSX 或渲染函數,更有利於對其進行某些分析。
在 Vue 3.0 中,將構建 Block Tree 來優化上述問題:
舉個栗子,有結構以下,對於外層 block ,它只有一個動態結點即 v-if 結點。對於內層 block ,只有 message span 可能動態變化。
原來各層都有多個結點,層級也不止兩層。通過優化,極大的減小了 Diff 時遞歸層級與迭代深度。更新性能將取決於動態內容的數量,而不是整個 template 的體積。
垃圾回收是 Vue 重要的性能殺手之一,這個優化也極大地減輕了垃圾回收的壓力。
在以前的處理中,每次 render ,都會爲全部結點,包括靜態結點,從新建立 Virtual DOM node ,這實際上是很浪費的。優化後,每次 render 只須要複用以前的對象,而無需從新建立。
在 Vue 3.0 中:
v-model="string"
,將自動引入 vModelText
。在線體驗 DEMO)以 React 和 Angular 舉例, Angular 試圖作的更多,而 React 試圖作的更少。(並非說他們中誰的設計很差,這只是框架設計的不一樣選擇)
此處以 small scope 代指 React 這類框架 ,以 big scope 代指 Angular 這類框架。
Small Scope 優勢:
Small Scope 缺點:
因此,這也是一種權衡,生態發展太快,會致使生態碎片化,增長用戶的開發成本,提升用戶的流失率。
Large Scope 優勢:
Large Scope 缺點:
而 Vue 則是在二者間,作了一個取捨平衡。在此稱其爲 "Progressive" Scope。
在 Vue 3.0 中:
開放更多的底層能力