vue和react的區(qū)別之我見

react和vue都是做組件化的唇辨,整體的功能都類似,但是他們的設(shè)計思路是有很多不同的能耻。使用react和vue赏枚,主要是理解他們的設(shè)計思路的不同亡驰。

1.數(shù)據(jù)是不是可變的

react整體是函數(shù)式的思想,把組件設(shè)計成純組件饿幅,狀態(tài)和邏輯通過參數(shù)傳入凡辱,所以在react中,是單向數(shù)據(jù)流栗恩,推崇結(jié)合immutable來實(shí)現(xiàn)數(shù)據(jù)不可變透乾。react在setState之后會重新走渲染的流程,如果shouldComponentUpdate返回的是true磕秤,就繼續(xù)渲染乳乌,如果返回了false,就不會重新渲染市咆,PureComponent就是重寫了shouldComponentUpdate汉操,然后在里面作了props和state的淺層對比。


image.png

而vue的思想是響應(yīng)式的蒙兰,也就是基于是數(shù)據(jù)可變的磷瘤,通過對每一個屬性建立Watcher來監(jiān)聽,當(dāng)屬性變化的時候搜变,響應(yīng)式的更新對應(yīng)的虛擬dom膀斋。


image.png

總之,react的性能優(yōu)化需要手動去做痹雅,而vue的性能優(yōu)化是自動的仰担,但是vue的響應(yīng)式機(jī)制也有問題,就是當(dāng)state特別多的時候绩社,Watcher也會很多摔蓝,會導(dǎo)致卡頓,所以大型應(yīng)用(狀態(tài)特別多的)一般用react愉耙,更加可控贮尉。

2.通過js來操作一切,還是用各自的處理方式

react的思路是all in js朴沿,通過js來生成html猜谚,所以設(shè)計了jsx,還有通過js來操作css赌渣,社區(qū)的styled-component魏铅、jss等,


image.png

vue是把html坚芜,css览芳,js組合到一起,用各自的處理方式鸿竖,vue有單文件組件沧竟,可以把html铸敏、css、js寫到一個文件中悟泵,html提供了模板引擎來處理杈笔。


image.png

3.類式的組件寫法,還是聲明式的寫法

react是類式的寫法糕非,api很少桩撮,


image.png

而vue是聲明式的寫法,通過傳入各種options峰弹,api和參數(shù)都很多店量。所以react結(jié)合typescript更容易一起寫,vue稍微復(fù)雜鞠呈。


image.png

vue結(jié)合vue-class-component也可以實(shí)現(xiàn)類式的寫法融师,但是還是需要通過decorator來添加聲明,并不純粹蚁吝。
image.png

react可以通過高階組件(Higher Order Components--HOC)來擴(kuò)展旱爆,而vue需要通過mixins來擴(kuò)展
一個react高階組件的例子:

image.png

image.png

vue的mixin的例子:
image.png

React剛開始也有mixin的寫法,通過React.createClass的api窘茁,不過現(xiàn)在很少用了怀伦。
Vue也不是不能實(shí)現(xiàn)高階組件,只是特別麻煩山林,因?yàn)閂ue對與組件的option做了各種處理房待,想實(shí)現(xiàn)高階組件就要知道每一個option是怎么處理的,然后正確的設(shè)置驼抹。具體有多復(fù)雜桑孩,可以參考下面的文章。
http://hcysun.me/2018/01/05/%E6%8E%A2%E7%B4%A2Vue%E9%AB%98%E9%98%B6%E7%BB%84%E4%BB%B6/

4.什么功能內(nèi)置框冀,什么交給社區(qū)去做

react做的事情很少流椒,很多都交給社區(qū)去做,vue很多東西都是內(nèi)置的明也,寫起來確實(shí)方便一些宣虾,
比如 redux的combineReducer就對應(yīng)vuex的modules,
比如reselect就對應(yīng)vuex的getter和vue組件的computed温数,
vuex的mutation是直接改變的原始數(shù)據(jù)绣硝,而redux的reducer是返回一個全新的state,所以redux結(jié)合immutable來優(yōu)化性能帆吻,vue不需要域那。

總結(jié)

上面主要梳理了react和vue的4點(diǎn)不同:

  1. 數(shù)據(jù)是不是可變的
  2. 通過js操作一切還是各自的處理方式
  3. 類式的組件寫法還是聲明式的寫法
  4. 什么功能內(nèi)置,什么交給社區(qū)去做

(其中第3點(diǎn)在vue3.0支持類式寫法之后就可以去掉了)

react整體的思路就是函數(shù)式猜煮,所以推崇純組件次员,數(shù)據(jù)不可變,單向數(shù)據(jù)流王带,當(dāng)然需要雙向的地方也可以做到淑蔚,比如結(jié)合redux-form,而vue是基于可變數(shù)據(jù)的愕撰,支持雙向綁定刹衫。react組件的擴(kuò)展一般是通過高階組件,而vue組件會使用mixin搞挣。vue內(nèi)置了很多功能带迟,而react做的很少,很多都是由社區(qū)來完成的囱桨,vue追求的是開發(fā)的簡單仓犬,而react更在乎方式是否正確。

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舍肠,一起剝皮案震驚了整個濱河市搀继,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翠语,老刑警劉巖叽躯,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肌括,居然都是意外死亡点骑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門谍夭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畔况,“玉大人,你說我怎么就攤上這事慧库□喂颍” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵齐板,是天一觀的道長吵瞻。 經(jīng)常有香客問我,道長甘磨,這世上最難降的妖魔是什么橡羞? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮济舆,結(jié)果婚禮上卿泽,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好签夭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布齐邦。 她就那樣靜靜地躺著,像睡著了一般第租。 火紅的嫁衣襯著肌膚如雪措拇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天慎宾,我揣著相機(jī)與錄音丐吓,去河邊找鬼。 笑死趟据,一個胖子當(dāng)著我的面吹牛券犁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汹碱,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼粘衬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了比被?” 一聲冷哼從身側(cè)響起色难,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎等缀,沒想到半個月后枷莉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尺迂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年笤妙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噪裕。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹲盘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膳音,到底是詐尸還是另有隱情召衔,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布祭陷,位于F島的核電站苍凛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏兵志。R本人自食惡果不足惜醇蝴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望想罕。 院中可真熱鬧悠栓,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腥沽,卻和暖如春逮走,著一層夾襖步出監(jiān)牢的瞬間鸠蚪,已是汗流浹背今阳。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茅信,地道東北人盾舌。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像蘸鲸,于是被迫代替她去往敵國和親妖谴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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