Vue.js是現(xiàn)代化的JavaScript框架,被廣泛用于構(gòu)建響應(yīng)式的單頁面應(yīng)用和互動(dòng)的用戶界面。Vue在社區(qū)中廣受歡迎,其中一個(gè)原因是它的簡(jiǎn)單易用性和靈活性。近日,Vue發(fā)布了新版本,該版本的一大亮點(diǎn)是對(duì)”原音”的消除。
Vue3.0的設(shè)計(jì)初衷就是更好地處理 TypeScript 和 Flow,也就是說,Vue 3.0 對(duì)準(zhǔn)備使用 TypeScript 進(jìn)行編寫的應(yīng)用程序做了大量的工作。其中最重要的一項(xiàng)工作就是將所有 Reactivity(響應(yīng)式)的特性從 Vue.js 的核心中分離出來稱為了Vue Reactivity API。新的響應(yīng)式 API 是為了支持現(xiàn)代編譯器優(yōu)化(可能采用了 proxys),因此很大程度上消除了 vue2 中原音的消耗。
Vue Reactivity API 內(nèi)部包含了一些 Recative 內(nèi)部需要的特定規(guī)則和算法。Vue Reactivity API 還使用內(nèi)存映射的技巧,對(duì)于大型應(yīng)用程序的數(shù)據(jù),這將要表現(xiàn)得比 Vue 2.x 更好。該 API 還進(jìn)一步優(yōu)化了數(shù)據(jù)偵聽器和 getter / setter 的性能,使之更快更高效。
Vue3.0 的代碼重構(gòu)讓我們重新審視了一下 Vue2.x 的性能問題,并在未來優(yōu)化性能和數(shù)據(jù)運(yùn)維方面大有作為。數(shù)據(jù)運(yùn)維方面,Vue 3.0 的更改將減少一些對(duì)于更新和依賴的遍歷,代替之是對(duì) key-weak maps 的使用。對(duì)于平均大小以下的組件,在 Vue3.0 中更新依賴的速度會(huì)更快,這將進(jìn)一步優(yōu)化我們的編程效率。
另一個(gè)非常顯眼的變化是關(guān)于組件引用的處理。在 Vue3.0 當(dāng)中,組件引用已經(jīng)被極度簡(jiǎn)化,無需過多關(guān)注組件細(xì)節(jié)。這是因?yàn)?Vue3.0 引入了更多的細(xì)節(jié)聲明方式,使我們不需通過繁瑣的語句來創(chuàng)建并且引用組件。
如上所述,Vue3.0 對(duì)于vue2 中原音的消耗進(jìn)行了重新設(shè)計(jì)和優(yōu)化,通過分離代碼和完善 Vue Reactivity API,大大提升了響應(yīng)性能力和性能表現(xiàn),減少了在組件渲染時(shí)的原音消耗。此外,在更新數(shù)據(jù)和依賴方面使用新的 key-weak maps 方法,可以進(jìn)一步優(yōu)化平均大小以下的組件的依賴更新速度。同時(shí),Vue3還對(duì)組件引用作了大幅度優(yōu)化,讓我們更有效地進(jìn)行開發(fā)。這是Vue3 發(fā)布的一大亮點(diǎn),也將帶來更出色的開發(fā)體驗(yàn)和運(yùn)行性能。