Vue.js是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,軟件加強(qiáng)了TypeScript的支持,加強(qiáng)API設(shè)計(jì)一致性,同時(shí)提高自身的可維護(hù)性,開(kāi)放了更多底層功能,易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合,能夠幫您大大提升工作效率。
Vue.js開(kāi)發(fā)背景
2013年末,作者還在Google Creative Lab工作。當(dāng)時(shí)在項(xiàng)目中使用了一段時(shí)間的Angular,在感嘆數(shù)據(jù)綁定帶來(lái)生產(chǎn)力提升的同時(shí),也感到Angular的API設(shè)計(jì)過(guò)于繁瑣,使得學(xué)習(xí)曲線頗為陡峭。出于對(duì)Angular數(shù)據(jù)綁定原理的好奇,作者開(kāi)始 “造輪子”,自己實(shí)現(xiàn)了一個(gè)非常粗糙的、基于依賴收集的數(shù)據(jù)綁定庫(kù)。這就是Vue.js的前身。同時(shí)在實(shí)際開(kāi)發(fā)中,作者發(fā)現(xiàn)用戶界面完全可以用嵌套的組件樹來(lái)描述,而一個(gè)組件恰恰可以對(duì)應(yīng)MVVM中的ViewModel。于是作者決定將我的數(shù)據(jù)綁定實(shí)驗(yàn)改進(jìn)成一個(gè)真正的開(kāi)源項(xiàng)目,其核心思想便是 “數(shù)據(jù)驅(qū)動(dòng)的組件系統(tǒng)”。
Vue.js特色
1、易用
在有HTML,CSS,JavaScript的基礎(chǔ)上,快速上手。
Vue.js 的 API 是參考了AngularJS、KnockoutJS、Ractive.js、Rivets.js。
Vue.js 的 API 的對(duì)于其他框架的參考不僅是參考,其中也包含了許多 Vue.js 的獨(dú)特功能。
2、靈活
簡(jiǎn)單小巧的核心,漸進(jìn)式技術(shù)棧,足以應(yīng)付任何規(guī)模的應(yīng)用。
3、性能
20kb min+gzip 運(yùn)行大小、超快虛擬 DOM 、最省心的優(yōu)化。
Vue.js新特性
1、壓縮包體積更小
當(dāng)前最小化并被壓縮的 Vue 運(yùn)行時(shí)大小約為 20kB(2.6.10 版為 22.8kB)。Vue 3.0捆綁包的大小大約會(huì)減少一半,即只有10kB!
2、Object.defineProperty -》 Proxy
Object.defineProperty是一個(gè)相對(duì)比較昂貴的操作,因?yàn)樗苯硬僮鲗?duì)象的屬性,顆粒度比較小。將它替換為es6的Proxy,在目標(biāo)對(duì)象之上架了一層攔截,代理的是對(duì)象而不是對(duì)象的屬性。這樣可以將原本對(duì)對(duì)象屬性的操作變?yōu)閷?duì)整個(gè)對(duì)象的操作,顆粒度變大。
javascript引擎在解析的時(shí)候希望對(duì)象的結(jié)構(gòu)越穩(wěn)定越好,如果對(duì)象一直在變,可優(yōu)化性降低,proxy不需要對(duì)原始對(duì)象做太多操作。
3、Virtual DOM 重構(gòu)
vdom的本質(zhì)是一個(gè)抽象層,用javascript描述界面渲染成什么樣子。react用jsx,沒(méi)辦法檢測(cè)出可以優(yōu)化的動(dòng)態(tài)代碼,所以做時(shí)間分片,vue中足夠快的話可以不用時(shí)間分片。
傳統(tǒng)vdom的性能瓶頸:
雖然 Vue 能夠保證觸發(fā)更新的組件最小化,但在單個(gè)組件內(nèi)部依然需要遍歷該組件的整個(gè) vdom 樹。
傳統(tǒng) vdom 的性能跟模版大小正相關(guān),跟動(dòng)態(tài)節(jié)點(diǎn)的數(shù)量無(wú)關(guān)。在一些組件整個(gè)模版內(nèi)只有少量動(dòng)態(tài)節(jié)點(diǎn)的情況下,這些遍歷都是性能的浪費(fèi)。
JSX 和手寫的 render function 是完全動(dòng)態(tài)的,過(guò)度的靈活性導(dǎo)致運(yùn)行時(shí)可以用于優(yōu)化的信息不足
下一篇:Apsaly多功能編程