在react項目中使用redux or mobx?

主要比較參數(shù):
  • 庫體積,打包項目體積
  • 開發(fā)體驗
  • 性能對比

在對比參數(shù)前首先分析一下redux和mobx的設(shè)計模式靴迫,redux和mobx都沒有使用傳統(tǒng)的mvc/mvvm形式,而且他們使用flux結(jié)構(gòu)也略有不同楼誓,這個也是造成redux和mobx各項參數(shù)不同的緣由之一玉锌。

mvc/mvvm和flux的對比

mvc設(shè)計圖
flux設(shè)計圖

如圖可知,mvc在處理多數(shù)據(jù)和復(fù)雜業(yè)務(wù)是有一定局限性的疟羹,一個view層可能會調(diào)用到無數(shù)個model層主守,當(dāng)然解決這個問題的方法也是有的禀倔,我們可以將多個model抽象成一個model,例如處理基礎(chǔ)數(shù)據(jù)的model合成一個基礎(chǔ)model参淫,但這樣編寫也會造成代碼的冗余以及沒必要的性能損耗救湖。

flux對比mvc,代碼結(jié)構(gòu)更加簡單涎才、一目了然鞋既。action處理數(shù)據(jù)請求,然后將請求dispatch到store中耍铜,這樣設(shè)計也十分契合react單向數(shù)據(jù)流的概念邑闺。在本文提到的兩個框架redux和mobx也都是基于flux的設(shè)計概念,不同的是mobx在store和view中處理數(shù)據(jù)是使用的雙向綁定棕兼,如下圖陡舅。

mobx設(shè)計圖

雙向綁定無疑會增加性能消耗,但是mobx在雙向綁定的同時禁掉了react自身的刷新伴挚,要知道react shouldupdate生命周期是性能優(yōu)化的大頭靶衍,mobx禁掉了這個性能會直接大幅提升,但這個和雙向綁定的性能消耗相比誰占用的性能更高章鲤,讓我們用數(shù)據(jù)比較摊灭。

庫體積,打包項目體積

我選用了兩個相似的項目败徊,一個使用redux開發(fā)帚呼,一個mobx(之所以沒用兩個框架把一個項目寫兩遍是因為我太懶了)。

mobx項目

表紅的部分是抽出的lib和打包的js皱蹦,一個是64.2k煤杀,一個是29.2k。

redux項目

這個項目redux lib是webpack手動打包的沪哺,沒有像mobx項目用打包版本沈自,體積是43.2k,app.js由于比mobx項目多使用了一個svg庫(32k)辜妓,體積達(dá)到了62.3k枯途,減去多的一個庫大概30.3k。

綜上籍滴,redux比mobx打包體積略大酪夷,幾乎可以忽略不記,但是lib包比mobx小20k孽惰,所以這輪redux勝晚岭,ヾ(==)ノ。

開發(fā)體驗

  • 學(xué)習(xí)成本:mobx基本看一遍勋功,看看demo就能上手寫了坦报;redux看兩天库说,寫了個練手demo才勉強(qiáng)會。
  • 開發(fā)效率:由于mobx是雙向綁定的片择,開發(fā)的時候你會覺得mobx寫的都是有效代碼潜的;redux寫同一個功能會多寫很多代碼,代碼邏輯繞啊繞字管。
  • 代碼質(zhì)量:redux直接寫夏块,不做react渲染優(yōu)化是個大坑,但是react渲染優(yōu)化又比較繁瑣纤掸,可能還要添加第三方插件脐供,增加不必要的代碼量。mobx基本不做渲染優(yōu)化借跪,渲染更新政己,是否更新的生命周期都被禁用了,還優(yōu)化個屁掏愁。歇由。。果港。

綜上 開發(fā)體驗上mobx比redux領(lǐng)先太多沦泌。

性能對比 此次比較是redux項目已經(jīng)優(yōu)化,mobx項目未優(yōu)化的情況下進(jìn)行的辛掠,mobx項目優(yōu)化后會補(bǔ)坑

  • 初始渲染
    感官是mobx更快谢谦,但是實際....下面上圖。下面兩張圖是初次渲染的圖萝衩,明顯mobx在內(nèi)存占用上更大回挽,我考慮的原因mobx和redux渲染部分都是靠的react,這部分差別不大猩谊,主要是mobx多了雙向綁定導(dǎo)致最大內(nèi)存數(shù)值很高千劈。在布局和渲染方面mobx優(yōu)勢明顯,主要得益于mobx禁用了react大部分的生命周期牌捷,很大程度的減少了刷新次數(shù)墙牌,這次用的redux項目已經(jīng)是優(yōu)化過了渲染次數(shù)的,但還是渲染這么多次不禁汗顏暗甥。javascript與事件這塊沒有做太多了解喜滨,待填坑。
redux性能圖淋袖,最大大小133.69mb
mobx性能圖鸿市,最大大小162mb
  • 內(nèi)存穩(wěn)定后測同樣操作的性能锯梁。
    redux最大內(nèi)存162即碗,但渲染次數(shù)還是驚人焰情。
    mobx內(nèi)存最大290,唯一欣慰的是渲染次數(shù)比較少剥懒。
redux性能圖
mobx性能圖

總結(jié)

優(yōu)化過后的redux項目性能比較好内舟,mobx暫時還沒想到特別好的優(yōu)化方案,找到了會補(bǔ)坑初橘;框架體驗验游,開發(fā)效率,學(xué)習(xí)成本方面mobx更好保檐,希望優(yōu)化過后的mobx性能有所提升耕蝉;代碼打包體積redux確實要小點,但是如果項目比較龐大夜只,redux開發(fā)代碼會比mobx多不少垒在,體積這方面基本可以忽略。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扔亥,一起剝皮案震驚了整個濱河市场躯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旅挤,老刑警劉巖踢关,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異粘茄,居然都是意外死亡签舞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門柒瓣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘪菌,“玉大人,你說我怎么就攤上這事嘹朗∈γ睿” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵屹培,是天一觀的道長默穴。 經(jīng)常有香客問我,道長褪秀,這世上最難降的妖魔是什么蓄诽? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮媒吗,結(jié)果婚禮上仑氛,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好锯岖,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布介袜。 她就那樣靜靜地躺著,像睡著了一般出吹。 火紅的嫁衣襯著肌膚如雪遇伞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天捶牢,我揣著相機(jī)與錄音鸠珠,去河邊找鬼。 笑死秋麸,一個胖子當(dāng)著我的面吹牛渐排,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灸蟆,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼飞盆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了次乓?” 一聲冷哼從身側(cè)響起吓歇,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎票腰,沒想到半個月后城看,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡杏慰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年测柠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缘滥。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡轰胁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朝扼,到底是詐尸還是另有隱情赃阀,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布擎颖,位于F島的核電站榛斯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搂捧。R本人自食惡果不足惜驮俗,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望允跑。 院中可真熱鬧王凑,春花似錦搪柑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至术荤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間每篷,已是汗流浹背瓣戚。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留焦读,地道東北人子库。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像矗晃,于是被迫代替她去往敵國和親仑嗅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評論 25 707
  • 本文作者:胡子大哈 原文鏈接:https://scriptoj.com/topic/178/如何在非-react-...
    胡子大哈閱讀 931評論 0 3
  • 家里有未成年的孩子张症,做父母的就又多了一個稱號——家長仓技。顧名思義,家長就是一家之長俗他,對家庭生活和孩子的成長肩負(fù)...
    左岸7102閱讀 410評論 0 0
  • (一) 我發(fā)現(xiàn)如果專門給孩子講道理脖捻,寶貝們會很煩的,煩就收不到效果了兆衅。 有次在書城里看油畫地沮,...
    花海洋閱讀 663評論 13 4
  • 漫長的時光,屬于九十年代羡亩;深刻的記憶摩疑,也似乎停留在童年時代。此后畏铆,時間過得飛快雷袋,記憶似沙塵易抹去,只是把手弄得有些...
    櫻桃的滋味閱讀 294評論 0 1