主要改進(jìn)
一.大幅提升運(yùn)行時(shí)的性能:重寫虛擬dom,效果提升30%~300%
在web的操作中所有的操作里面最慢的就是dom操作,(也就是對(duì)html元素操作)dom操作要比加減乘除賦值這些操作慢幾千倍。所以如果降低了dom操作的時(shí)間,那么整體性能就會(huì)有質(zhì)的飛躍。虛擬dom會(huì)幫我們優(yōu)化dom操作,如果不用虛擬dom自己操作的話,可能會(huì)把所有的dom都遍歷一遍,然后找到,改值的等等一系列的,會(huì)導(dǎo)致所有dom都被影響。而用了虛擬dom相當(dāng)于在背后替你做了個(gè)優(yōu)化,diff(現(xiàn)代視圖層常用的算法)它能幫你監(jiān)測(cè)到底哪些節(jié)點(diǎn)真的變了哪些沒變,然后去做重新渲染的操作。
核心思想:
跳過靜態(tài)節(jié)點(diǎn),只處理動(dòng)態(tài)節(jié)點(diǎn)。而靜態(tài)節(jié)點(diǎn)渲染一次就不管了,所以處理的數(shù)據(jù)量會(huì)有一個(gè)巨大的下降,從而提升巨大性能。
例:
<template>
<div>
<span>aaa</span> //靜態(tài)節(jié)點(diǎn)
<span>{{b}}</span> //動(dòng)態(tài)節(jié)點(diǎn)
<span>bbb</span> //靜態(tài)節(jié)點(diǎn)
</div>
</template>
<script>
export default {
data(){
return {
a:123
}
}
}
</script>
二.提升網(wǎng)絡(luò)性能:tree-shaking機(jī)制
tree:依賴樹,所有的依賴(import)都是tree的節(jié)點(diǎn),有一個(gè)問題就是你引入的樹可能會(huì)有大量的功能而你所使用的可能就是其中的一兩項(xiàng)功能。但是程序不知道,所以在打包時(shí)候會(huì)把整個(gè)庫都打包給你。
shaking:通過代碼反向監(jiān)測(cè)那些特性被用到,因此會(huì)決定打包的時(shí)候會(huì)打包那些。
import play from 'play' play.show()
假設(shè)引入了play庫,它里面有很多操作但是你只用到了show操作,在這種情況下就可以監(jiān)測(cè)出來,所以就把show打進(jìn)來,當(dāng)然還包括這個(gè)show的依賴,這時(shí)候會(huì)減掉大量的沒必要的東西。一句話理解就是只打包必要的依賴項(xiàng)。
當(dāng)然你可以主動(dòng)去優(yōu)化,比如分包加載,換一些更小的包等等…但是這并不是最好的解決方法,因?yàn)槟阌昧藇ue這個(gè)框架,這個(gè)框架本身就很大,所以vue3就主動(dòng)采用了tree-shaking從根本上把vue給縮小了。(當(dāng)然這不是vue首創(chuàng),幾乎所有的編譯工具都有這個(gè)機(jī)制比如webpack)
三.完全typescript支持
為什么要用ts:因?yàn)閠s強(qiáng)大的類型系統(tǒng),類型提示,大型應(yīng)用必備。
vue3支持情況:完全ts重寫。但并不是之前js寫的要改ts。就算是用js開發(fā)也是盡量的保證相應(yīng)的提示。
浙公網(wǎng)安備 33010602011771號(hào)