淺談Vue3的幾個優勢
Vue2已經非常優秀,且具備完善的社區和生態,但是Vue3仍然在源碼、性能和語法 API 三個大的方面進行瞭優化
1、源碼
1.1 monorepo
源碼管理方式采用monorepo
的方式進行管理,monorepo
把這些模塊拆分到不同的 package
中,每個 package
有各自的 API、類型定義和測試。這樣使得模塊拆分更細化,職責劃分更明確,模塊之間的依賴關系也更加明確,開發人員也更容易閱讀、理解和更改所有模塊源碼,提高代碼的可維護性
1.2 TypeScript
Vue2
時期選擇的是flow
,由於flow
自身存在一些功能上的短板,且TS
發展勢頭更好,Vue3
選擇使用TS
編寫代碼,也可以更好的支持TS
提升開發體驗
2、性能
2.1 優化源碼體積
主要從兩個方面進行瞭源碼體積優化:
移除一些冷門API,比如 filter
、inline-template
等
API減少,必然會減少代碼體積,這點非常容易理解
引入tree-shaking
減少打包體積
tree-shaking
依賴 ES2015
模塊語法的靜態結構(即 import
和 export
),通過編譯階段的靜態分析,找到沒有引入的模塊並打上標記,這個技術在webpack
等打包工具上已經非常普及
在Vue3中的應用:我們大概率不會使用Vue
提供的全部API
,總會有一些冷門的、業務場景單一使用不到的API,那麼在打包的過程中就可以將這些沒有被用戶使用的API
移除,減少打包體積
2.3 Proxy
Vue2
之前使用Object.defineProperty
進行數據劫持
Object.defineProperty(source, key, { get(){ // todo... }, set(){ // todo... } })
其存在一些缺陷
- 必須預先知道劫持的
key
是什麼,並不能很好的監聽到對象屬性的添加、刪除 - 初始化時遞歸遍歷整個
data
,導致深層嵌套數據結構造成性能負擔, Vue3
使用Proxy
進行數據劫持,可以很好的規避Object.defineProperty
帶來的缺陷
p = new Proxy(source, { get() { // todo... }, set() { // todo... } })
2.4 Composition API
Vue3
在語法方面進行瞭優化,主要是提供瞭 Composition API
替換原本的Options API
Options API
提供瞭 methods
、computed
、data
、props
以及各個階段的生命鉤子選項,開發者可以在每個API中做著對應的事情,各司其職,上手和理解成本非常低,對於新手開發者非常友好。使用其開發小型項目時代碼的閱讀性、維護性等也是可觀的,但是當遇到大型項目或者較為復雜的業務邏輯時,代碼將會變得非常難以維護,常常導致修改一個功能需要在代碼中跳轉多個地方,一個功能的代碼分散在各個地方,造成閱讀和理解成本直線增加,Composition API
,它有一個很好的機制去解決這樣的問題,就是將某個邏輯關註點相關的代碼全都放在一個函數裡,這樣當需要修改一個功能時,就不再需要在文件中跳來跳去
到此這篇關於淺談Vue3的幾個優勢的文章就介紹到這瞭,更多相關Vue3優勢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Vue3中的ref為何要用.value進行值的調用呢
- Vue自定義名稱下載PDF的方法
- Vue3使用Proxy實現數據監聽的原因分析
- 詳解vue3.2中setup語法糖<script lang="ts" setup>
- Vue3進階主題Composition API使用詳解