對比其他框架-React
React 和 Vue 有許多相似之處,它們都有使用 Virtual DOM;提供了響應(yīng)式(Reactive)和組件化(Composable)的視圖組件。將注意力集中保持在核心庫,而將其他功能如路由和全局狀態(tài)管理交給相關(guān)的庫。React 比 Vue 有更豐富的生態(tài)系統(tǒng)
都有支持native的方案,React的RN,vue的Wee下
都支持SSR服務(wù)端渲染
都支持props進(jìn)行父子組件間的通信
性能方面:React 和 Vue 在大部分常見場景下都能提供近似的性能。通常 Vue 會(huì)有少量優(yōu)勢,因?yàn)?Vue 的 Virtual DOM 實(shí)現(xiàn)相對更為輕量一些。
不同之處就是:
數(shù)據(jù)綁定方面,vue實(shí)現(xiàn)了數(shù)據(jù)的雙向數(shù)據(jù)綁定,react數(shù)據(jù)流動(dòng)是單向的
virtual DOM不一樣,vue會(huì)跟蹤每一個(gè)組件的依賴關(guān)系,不需要重新渲染整個(gè)組件樹.而對于React而言,每當(dāng)應(yīng)用的狀態(tài)被改變時(shí),全部組件都會(huì)重新渲染,所以react中會(huì)需要shouldComponentUpdate這個(gè)生命周期函數(shù)方法來進(jìn)行控制
state對象在react應(yīng)用中不可變的,需要使用setState方法更新狀態(tài);在vue中,state對象不是必須的,數(shù)據(jù)由data屬性在vue對象中管理(如果要操作直接this.xxx)
組件寫法不一樣, React推薦的做法是 JSX , 也就是把HTML和CSS全都寫進(jìn)JavaScript了,即'all in js'; Vue推薦的做法是webpack+vue-loader的單文件組件格式,即html,css,js寫在同一個(gè)文件
對比其他框架-angular
在性能方面,這兩個(gè)框架都非常的快,我們也沒有足夠的實(shí)際應(yīng)用數(shù)據(jù)來下一個(gè)結(jié)論。如果你一定想看些數(shù)據(jù)的話,你可以參考這個(gè)第三方跑分。單就這個(gè)跑分來看,Vue 似乎比 Angular 要更快一些。
在大小方面,最近的 Angular 版本中在使用了 AOT 和 tree-shaking 技術(shù)后使得最終的代碼體積減小了許多。但即使如此,一個(gè)包含了 vuex + vue-router 的 Vue 項(xiàng)目 (30kb gzipped) 相比使用了這些優(yōu)化的 Angular CLI 生成的默認(rèn)項(xiàng)目尺寸 (~130kb) 還是要小的多。
靈活性:Vue 相比于 Angular 更加