Vue和React的區(qū)別和聯(lián)系

作為前端最常用的兩大框架,他們有相似之處也有各自不同的優(yōu)缺點芯侥,正確的理解這些內(nèi)容能使我們在面對項目技術(shù)棧的選擇中起到巨大的幫助作用缠犀。

首先需要明確的一點焰轻,不管是React還是Vue都不是MVVM框架臭觉,只是借鑒了MVVM的思路開發(fā)的框架。

其次兩大框架沒有必要強調(diào)哪個更好的問題,只是各自有所側(cè)重蝠筑,遇到問題選擇更適合自己和項目的才是關(guān)鍵狞膘。

兩者的異同

相似之處
  • 都將注意力集中保持在核心庫,而將其他功能如路由和全局狀態(tài)管理交給相關(guān)的庫
  • 都有自己的構(gòu)建工具什乙,能讓你得到一個根據(jù)最佳實踐設(shè)置的項目模板挽封。
  • 都使用了'Virtual DOM'(虛擬DOM)提高重繪性能
  • 都有’props’的概念,允許組件間的數(shù)據(jù)傳遞
  • 都鼓勵組件化應(yīng)用臣镣,將應(yīng)用分拆成一個個功能明確的模塊辅愿,提高復(fù)用性
    雖然上面幾點提到了兩者的相似之處,但是由于設(shè)計思路的不同忆某,讓兩者在具體的實現(xiàn)和應(yīng)用中存在很多差異
區(qū)別之處

數(shù)據(jù)流
Vue默認(rèn)支持?jǐn)?shù)據(jù)雙向綁定点待,而React一直提倡單向數(shù)據(jù)流

數(shù)據(jù)綁定.png

虛擬DOM
Vue2.x 開始引入“Virtual DOM”,消除了和React在這方面的差異褒繁,但是在具體的細(xì)節(jié)還是有各自的特點

  • Vue宣稱可以更快地計算出Virtual DOM的差異,這是由于它在渲染過程中馍忽,會跟蹤每一個組件的依賴關(guān)系棒坏,不需要重新渲染整個組件樹。
  • 對于React而言遭笋,每當(dāng)應(yīng)用的狀態(tài)被改變時坝冕,全部子組件都會重新渲染。當(dāng)然瓦呼,這可以通過PureComponent/shouldComponentUpdate這個生命周期方法來進行控制喂窟,但Vue將此視為默認(rèn)的優(yōu)化。

組件化
React與Vue最大的不同是模板的編寫央串。
Vue鼓勵你去寫近似常規(guī)HTML的模板磨澡。寫起來很接近標(biāo)準(zhǔn)HTML元素,只是多了一些屬性质和。
React推薦你所有的模板通用JavaScript的語法擴展——JSX書寫稳摄。
具體來講:
React中render函數(shù)是支持閉包特性的,所以我們import的組件在render中可以直接調(diào)用饲宿。但是在Vue中厦酬,由于模板中使用的數(shù)據(jù)都必須掛在 this 上進行一次中轉(zhuǎn),所以我們import 一個組件完了之后瘫想,還需要在 components 中再聲明下仗阅,這樣顯然是很奇怪但又不得不這樣的做法。

監(jiān)聽數(shù)據(jù)變化的實現(xiàn)原理不同
Vue 通過 getter/setter 以及一些函數(shù)的劫持国夜,能精確知道數(shù)據(jù)變化减噪,不需要特別的優(yōu)化就能達到很好的性能
React 默認(rèn)是通過比較引用的方式進行的,如果不優(yōu)化(PureComponent/shouldComponentUpdate)可能導(dǎo)致大量不必要的VDOM的重新渲染
這是因為Vue 使用的是可變數(shù)據(jù),而React更強調(diào)數(shù)據(jù)的不可變旋廷。

高階組件
react可以通過高階組件(Higher Order Components--HOC)來擴展鸠按,而vue需要通過mixins來擴展
原因高階組件就是高階函數(shù),而React的組件本身就是純粹的函數(shù)饶碘,所以高階函數(shù)對React來說易如反掌目尖。相反Vue.js使用HTML模板創(chuàng)建視圖組件,這時模板無法有效的編譯扎运,因此Vue不采用HoC來實現(xiàn)瑟曲。
并不是說Vue無法創(chuàng)建高階組件乙埃,而是相對React來說方法更加繁瑣

狀態(tài)管理和對象屬性
關(guān)于Redux和Vuex的差別壁畸,如果展開來講又是一個相對較大的內(nèi)容忧额,有時間會開新的文檔進行總結(jié)帝牡,這里主要關(guān)注的還是React和Vue框架滋捶。

構(gòu)建工具
兩者都有自己的構(gòu)建工具
React ==> Create React APP
Vue ==> vue-cli

跨平臺開發(fā)
React ==> React Native
Vue ==> Weex

對比和選擇

React優(yōu)點

  • 靈活性和響應(yīng)性:它提供最大的靈活性和響應(yīng)能力抓歼。
  • 虛擬DOM:由于它基于文檔對象模型嚷闭,因此它允許瀏覽器友好地以HTML勤众,XHTML或XML格式排列文檔掩浙。
  • 豐富的JavaScript庫:來自世界各地的貢獻者正在努力添加更多功能花吟。
  • 可擴展性:由于其靈活的結(jié)構(gòu)和可擴展性,React已被證明對大型應(yīng)用程序更好厨姚。
  • 不斷發(fā)展: React得到了Facebook專業(yè)開發(fā)人員的支持衅澈,他們不斷尋找改進方法。
  • Web或移動平臺: React提供React Native平臺谬墙,可通過相同的React組件模型為iOS和Android開發(fā)本機呈現(xiàn)的應(yīng)用程序今布。
    無論是Web還是本機移動開發(fā),React都是大多數(shù)用戶界面設(shè)計平臺的理想選擇拭抬。

React缺點
陡峭的學(xué)習(xí)曲線:由于復(fù)雜的設(shè)置過程部默,屬性,功能和結(jié)構(gòu)造虎,它需要深入的知識來構(gòu)建應(yīng)用程序甩牺。

Vue優(yōu)點

  • 易于使用: Vue.js包含基于HTML的標(biāo)準(zhǔn)模板,可以更輕松地使用和修改現(xiàn)有應(yīng)用程序累奈。
  • 更順暢的集成:無論是單頁應(yīng)用程序還是復(fù)雜的Web界面贬派,Vue.js都可以更平滑地集成更小的部件,而不會對整個系統(tǒng)產(chǎn)生任何影響澎媒。
  • 更好的性能搞乏,更小的尺寸:它占用更少的空間,并且往往比其他框架提供更好的性能戒努。
  • 精心編寫的文檔:通過詳細(xì)的文檔提供簡單的學(xué)習(xí)曲線请敦,無需額外的知識; HTML和JavaScript將完成工作镐躲。
  • 適應(yīng)性:整體聲音設(shè)計和架構(gòu)使其成為一種流行的JavaScript框架。它提供無障礙的遷移侍筛,簡單有效的結(jié)構(gòu)和可重用的模板

Vue缺點
在使用Vue.js時萤皂,當(dāng)state特別多的時候,Watcher也會很多匣椰,會導(dǎo)致卡頓裆熙。

選擇

Vue
最新文檔和更簡單的語法。
更小禽笑,更快入录,更靈活。
豐富的HTML模板佳镜,易于開發(fā)僚稿。

React
專業(yè)和出色的社區(qū)支持,以解決任何問題蟀伸。
需要構(gòu)建大型應(yīng)用程序蚀同。
輕量級,易于版本遷移啊掏。

在生態(tài)上來說蠢络,兩者其實沒多大的差距,當(dāng)然 React 的用戶是遠(yuǎn)遠(yuǎn)高于 Vue 的脖律。
在上手成本上來說谢肾,Vue 一開始的定位就是盡可能的降低前端開發(fā)的門檻腕侄,然而 React 更多的是去改變用戶去接受它的概念和思想小泉,相較于 Vue 來說上手成本略高。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冕杠,一起剝皮案震驚了整個濱河市微姊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌分预,老刑警劉巖兢交,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笼痹,居然都是意外死亡配喳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門凳干,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晴裹,“玉大人,你說我怎么就攤上這事救赐〗牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泌绣。 經(jīng)常有香客問我钮追,道長,這世上最難降的妖魔是什么阿迈? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任元媚,我火速辦了婚禮,結(jié)果婚禮上仿滔,老公的妹妹穿的比我還像新娘惠毁。我一直安慰自己,他們只是感情好崎页,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布鞠绰。 她就那樣靜靜地躺著,像睡著了一般飒焦。 火紅的嫁衣襯著肌膚如雪蜈膨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天牺荠,我揣著相機與錄音翁巍,去河邊找鬼。 笑死休雌,一個胖子當(dāng)著我的面吹牛灶壶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杈曲,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼驰凛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了担扑?” 一聲冷哼從身側(cè)響起恰响,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涌献,沒想到半個月后胚宦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡燕垃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年枢劝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卜壕。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡您旁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出印叁,到底是詐尸還是另有隱情被冒,我是刑警寧澤军掂,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站昨悼,受9級特大地震影響蝗锥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜率触,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一终议、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葱蝗,春花似錦穴张、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悼凑,卻和暖如春偿枕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背户辫。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工渐夸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渔欢。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓墓塌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奥额。 傳聞我的和親對象是個殘疾皇子苫幢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容