vue和react的區(qū)別:
1垄潮、模板渲染方式的不同
在表層上奇瘦,模板的語法不同桩卵,React是通過JSX渲染模板验靡。而Vue是通過一種拓展的HTML語法進(jìn)行渲染。
在深層上雏节,模板的原理不同,通過原生JS實現(xiàn)模板中的常見語法胜嗓,比如插值,條件钩乍,循環(huán)等辞州,都是通過JS語法實現(xiàn)的,更加純粹更加原生寥粹。
Vue是在和組件JS代碼分離的單獨的模板中变过,通過指令來實現(xiàn)的,比如條件語句就需要 v-if 來實現(xiàn)對這一點涝涤,這樣的做法顯得有些獨特媚狰,會把HTML弄得很亂。2妄痪、渲染過程不同
Vue可以更快地計算出Virtual DOM的差異哈雏,這是由于它在渲染過程中,會跟蹤每一個組件的依賴關(guān)系衫生,不需要重新渲染整個組件樹裳瘪。
React在應(yīng)用的狀態(tài)被改變時,全部子組件都會重新渲染罪针。通過shouldComponentUpdate這個生命周期方法可以進(jìn)行控制彭羹,但Vue將此視為默認(rèn)的優(yōu)化。3泪酱、框架本質(zhì)不同
Vue本質(zhì)是MVVM框架派殷,由MVC發(fā)展而來还最;
React是前端組件化框架,由后端組件化發(fā)展而來毡惜。4拓轻、數(shù)據(jù)流不同
vue是響應(yīng)式的數(shù)據(jù)雙向綁定系統(tǒng),而react是單向數(shù)據(jù)流经伙,沒有雙向綁定扶叉。5、監(jiān)聽數(shù)據(jù)變化的實現(xiàn)原理不同
Vue通過 getter/setter以及一些函數(shù)的劫持帕膜,能精確知道數(shù)據(jù)變化枣氧。
React默認(rèn)是通過比較引用的方式(diff)進(jìn)行的,如果不優(yōu)化可能導(dǎo)致大量不必要的VDOM的重新渲染垮刹。為什么React不精確監(jiān)聽數(shù)據(jù)變化呢达吞?這是因為Vue和React設(shè)計理念上的區(qū)別,Vue使用的是可變數(shù)據(jù)荒典,而React更強(qiáng)調(diào)數(shù)據(jù)的不可變酪劫,兩者沒有好壞之分,Vue更加簡單寺董,而React構(gòu)建大型應(yīng)用的時候更加魯棒契耿。6、Vuex和Redux的區(qū)別
從表面上來說螃征,store注入和使用方式有一些區(qū)別:
在Vuex中:
$store被直接注入到了組件實例中,因此可以比較靈活的使用透敌。使用dispatch盯滚、commit提交更新,通過mapState或者直接通過
this.$store來讀取數(shù)據(jù)酗电。
在Redux中:我們每一個組件都需要顯示的用connect把需要的props和dispatch連接起來魄藕。
另外,Vuex更加靈活一些撵术,組件中既可以dispatch action背率,也可以commit updates,而Redux中只能進(jìn)行dispatch嫩与,不能直接調(diào)用reducer進(jìn)行修改寝姿。