redux mobx rxjs這三款資料流管理工具在你專案中是如何取捨的?

時間 2021-05-07 17:07:17

1樓:失禮

高讚說的很好。

總得說來說就是:

redux可以作為乙個全域性的排程器。另外,在分層上也可以當成資料庫層面的東西,此時各個connect內的selector,是用於查詢自己領域需要的資料的語句,可以說是持久層到頁面物件的對映。

mobx則可以放在元件裡做區域性管理

rxjs更像是乙個事件處理庫,處理事件的lodash。配合做redux的輔助中介軟體或者在一些區域性使用有奇效。

但是這樣的方式,redux的存在感會非常低,可以說基本用不到。

正文:首先,資料與ui分離才能做更好的測試,所以我不覺得在元件裡放置state是個好事,react最好僅僅做view層比較好。如果這點不認同,下面我講的都不用看了。

在redux做資料模型然後觸發更新的機制實在太坑,具體就不細說了。

詳見:失禮:redux vs mobx的一點思考

上面吐槽的是原生的redux,社群封裝的redux也可以解決一些開發效率的問題,畢竟它簡單所以才讓其顯得靈活畢。

react16的context算是救場了redux。但context還是很適合做元件用,但不適合做資料模型儲存載體。原因還是不好做模型資料的測試。

mobx的oop且是reactive的,一方面在業務邊界上可以很省心的劃分。另一方面,一切可被推倒的ui邏輯都可以反應到ui上,可以從某種層面杜絕在react裡寫衍生資料的情況(在redux裡可以近似認為是selector)。

在資料模型依賴的情況下,明顯單一store更好處理。所以,在些全域性事件或者跨邊界的情況下,單一store的redux更好用,而mobx需要用inject方式做聚合。但是全域性聚合,mobx也能做到啊,redux似乎不需要使用了。

還有乙個比較的層面,redux一切靠action改變store在事件還原的場景很適合,思想很像是 EventSourcing, 這是 mobx做不到啊。

那怎麼辦呢?

那就試試 mobx state tree 吧。

ps: 吐槽,大家說的小應用實在是一種模糊的說法,也可以說是一種討巧的說法。大型應用分兩類,一種是業務邊界多,多個模組聚合的大應用。

第二種是事件多且資料流複雜,例如某些遊戲。第一種 redux 和 mobx其實都可以,第二種就用mobx吧。

以上,都是我胡說八道的。說的不對,還請指正。

2樓:

mobx或其思想:不太大的業務模組,以及作為全域性資料共享器。

redux或其思想:複雜業務模組或者單頁(複雜到單頁坦克大戰那種)。

以上「或其思想」的意思是,可能不是用的原庫,而是自研實現,只是思想一致。

High height altitude這三個詞從航空角度解釋有什麼區別呢?

高 height 指自某乙個特定基準面量至乙個平面,乙個點或者可以視為乙個點的物體的垂直距離。高度 altitude 指自平均海平面量至乙個平面,乙個點或者可以視為乙個點的垂直距離。 拿著卡片上火山 High指特定物的高度 如DA H 210 200 指的就是決斷高210英呎決斷高度200英呎可推算...

初三這成績有救嗎?

吃了莓 只要願意努力就有救。現在最主要的不是和別人比,而是把分數提上來,因為每個人都在努力,你比人家額外努力的時間可能多不了多少,爭取把知識點掌握就好。既然你能主動問別人,說明你還是願意去改變的。所以從現在開始努力,雖然你的分數看起來很難提公升,但其實只要你肯努力就一定會有進步,只是進步的多少而已。...

我們這算三觀不合嗎?

吃飯睡覺打豆豆 不說三觀也有一兩觀不合吧。不過你知道他是這樣的性格,一定要把30塊這樣的小事都告訴他嗎?是要找他報賬還是咋地?自己的職業規劃自己做,辭職不辭職他可以提意見,你可以採納也可以不採納。沒有誰能對你的人生無限負責。 喝啥喲 公司辦團建每個人適當掏錢是很正常的。但是就你所說,當工資提高,他還...