vue3.0 變化點:
1.源碼體積優(yōu)化:
引入tree-shaking:通過編譯階段的靜態(tài)分析,找到?jīng)]有引入的模塊并打上標(biāo)記现使,然后在壓縮階段會刪除這些沒有用的代碼
如果在項目中沒有引入transition指黎、keepAlive等組件硼端,那么他們對應(yīng)的代碼就不會打包,從而減少項目引入vue.js包體積的目的
2.數(shù)據(jù)劫持優(yōu)化:
- vue2.0通過object.defineProperty 這個API劫持?jǐn)?shù)據(jù)的getter 和 setter给梅,把每一層對象數(shù)據(jù)都變成響應(yīng)式假丧,如果對象嵌套層級比較深,就會有一些性能問題
- vue3.0是通過 proxy 這個API進行數(shù)據(jù)劫持动羽,劫持的是整個對象包帚,是通過在getter中遞歸響應(yīng)式,即真正訪問到內(nèi)部對象才會變成響應(yīng)式运吓,一定程度上提升了性能
3.編譯優(yōu)化:
- 當(dāng)整個模版只有少量動態(tài)節(jié)點時渴邦,vue2.0會遍歷和diff所有節(jié)點疯趟,而vue3.0在編譯階段對靜態(tài)模版的分析,編譯生成了block tree
4.語法API優(yōu)化:
- 提供了 Composition API谋梭,將某個邏輯關(guān)注點相關(guān)的代碼全都放在一個函數(shù)里信峻,當(dāng)需要修改一個功能時,就不需要在文件中跳來跳去