本帖最後由 fx360bx 於 2019-9-26 11:05 編輯
MobX 可以細到每個有 Logic 嘅 Component 一個 Store 而係 Make Sense

我個 Price Feed 答案就係其中一 ...
hihihi123hk 發表於 2019-9-26 09:45



咁我又真係唔明

Redux 細到每個有 logic 既 component 一個 reducer,都得既姐…
我唔知點為之 make sense,咁有人鍾意一個 component 一個 reducer,有人鍾意包起曬,以 business function 黎分,都係設計上既 personal preference 姐,唔係咩…

我唔同你糾纏 price feed 呢個咁另類既例子啦 ,你話你用 Redux 做唔到但 MobX 做到咪用 MobX。我係想睇下普通 projects 可唔可以 benefit from MobX 姐,事關 Redux 多人用過 MobX。

我而家都已經用緊 Redux,想轉 MobX 都要大執,可能我睇下有冇必要用 Saga,多謝你提醒我 Saga 呢樣野,之前都見其他討論區有人配 Redux 咁用。


Btw,點解呢度話 MobX 冇咁 scalable,而 Redux 主要用喺複雜 project?
佢話 MobX performance 好啲,所以你個 price feed project 需要 high performance 的確 MobX 係首選。

https://www.educba.com/mobx-vs-redux/

TOP

本帖最後由 fx360bx 於 2019-9-26 10:22 編輯

其實我而家用 Redux 發覺到有個問題,就係啲人話 Redux 既 state 係 immutable,但我自己用落發覺根本唔係,係可以唔經 dispatch action 既方式直接 mutate store 裡面既 reducer state(我用 React-Redux 既 useSelector,喺 GitHub 問過啲人 confirm 話係可以 directly mutate 個 state),唔清楚係要我自己額外做啲野去 guarantee immutability 定佢有設計問題。

In Redux, there is only one store and it is the single source of truth. The state in the store is immutable, which makes it easier for us to know where to find the data/state.

https://blog.logrocket.com/redux-vs-mobx/

不過同一篇文章,話 MobX 仲易學過 Redux,又講到 Redux 唔配 Saga、Thunk 唔得咁,但 MobX 唔洗,咁又似乎 MobX 好啲。

Learning Redux, also means you need to learn about Redux middleware like Thunks or Sagas, which adds more material to learn.
MobX is known to be much easier to grasp when compared to Redux.

TOP

我呢d寫左超過20年的它seafood話你知, 每個framework/ library 都會講到自己點好點好, 但你要留意的係佢背後設計同實踐的理諗, 世上冇一種framework係萬能的, 只有在某一個環境/用法/設計上最就手的.
但用咩framework最終都會做到, 只係用的effort會有分別..

現實中並冇邊個framework好過邊個framework,這是冇意思的事來的, 一個project 用咩framework係好睇本身甚至一整條team的skill set, 更甚係客戶/老闆的要求, 所以我們最後只會有綜合所有外在因素後最好的選擇, 而冇最萬能的..

其實我而家用 Redux 發覺到有個問題,就係啲人話 Redux 既 state 係 immutable,但我自己用落發覺根本唔係 ...
fx360bx 發表於 2019-9-26 10:21

TOP

回覆 50# hihihi123hk


    Ching,我見呢度都有人講 Redux vs MobX 既 performance,同埋要點樣 tweak Redux 先做到同 MobX comparable 既 performance。不過篇野用啲 library versions 就幾舊下。

https://hackernoon.com/an-artifi ... for-it-1a58313c0c70

MobX:
https://dtinth.github.io/pixelpaint/?experiment=MobXCanvas

最簡單 Redux(v1):
https://dtinth.github.io/pixelpaint/?experiment=ReduxCanvas

1 個 pixel = 1 store(大量)既 Redux(v3):
https://dtinth.github.io/pixelpaint/?experiment=ReduxCanvasV3

TOP

本帖最後由 hihihi123hk 於 2019-9-26 15:11 編輯
咁我又真係唔明

Redux 細到每個有 logic 既 component 一個 reducer,都得既姐…
我唔知點為之  ...
fx360bx 發表於 2019-9-26 10:08

如果冇興趣自己做一次 Price Feed(自己用 Redux 諗一次學下)

你可以直接係 GitHub 搵我寫個答案睇番   強調番, Price Feed 個例子 MobX 冇特別優勢,事關 MobX 平時就算做 TODO List 都係咁寫

我都明白冇見過 MobX 可以點 Architect 係會比較難明, 見過你就可能會明我之前解釋嘅 points;係完全兩種方法去 Architect

scalability 方面,只係差在識唔識用 MobX ,本身冇 scalability issue;

硬係要話 scalability 嘅話:Redux 係程序上無論新手有幾唔識都一定要跟足,一個非常 Strict 嘅 Pattern,而 MobX 則比較自由,要自己 Architect 一個 Pattern,若你冇一個 Pattern 個個 Freestyle 用咁一定難 Scale,所以個答案係 Yes/No,因為你唔可以 Assume 人地 Base on MobX 起嘅 Pattern 唔 Scalable

每樣工具要達到 in-a-scale 嘅時候都有各自 Approach 要學番

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)

TOP

我呢d寫左超過20年的它seafood話你知, 每個framework/ library 都會講到自己點好點好, 但你要留意的係佢背 ...
vichui 發表於 2019-9-26 11:32



    呢個我同意呀,只係 hihihi123hk ching 提出一樣野好過一樣野,但同我既理解同埋網上既資料唔同,所以好好奇咁解。我都想睇下我既用途上(其實都只係一般 projects,唔洗好高效能)有冇可能從唔同既 tools 上得益到。

TOP

本帖最後由 hihihi123hk 於 2019-9-27 08:36 編輯
呢個我同意呀,只係 hihihi123hk ching 提出一樣野好過一樣野,但同我既理解同埋網上既資料唔同,所 ...
fx360bx 發表於 2019-9-26 15:15

In case 新手唔知

GitHub Page default link

https://gaplo917.github.io/mobx-react-mvvm-example/

改少少就去到答案

https://github.com/gaplo917/mobx-react-mvvm-example

言歸正傳,Redux / MobX 想達到 Best practice 套路上好唔同。

我會話 Scrum/Agile 嘅 Methodology 用 MobX 會比較合適,Separation of Concern 可以做得比 Redux 更直接及清晰,亦代表易改易剷,乎合 Business 要求(每個 Iteration 都可能會改上一個 Iteration 做咗嘅 Works)

Waterfall 的話用 Redux 也不錯,定好哂啲 Requirement 再定好成個 Frontend Data flow Architecture,Redux 由於係 Event Souring 可以做到一啲好 Fancy 嘅 Remote Time Travel 幫助到 Debug

但如果用 Redux, 每隔兩星期就改 Behavior 的話,真心不了   。Agile 都焗住用冇問題,咁咪做慢啲(Cost 大咗)

如果寫 Redux 當啲 Events 複雜到要依賴有個 Chrome Redux Debugger,逐個 Action 同埋 Incremental State  睇先可以 De 到 Bug,咁其實呢個開發體驗本身唔可以叫好,好大機會就係冇諗清楚啲 Data Flow 就亂咁加 State 加 Action 會產生嘅結果,代表亂加到人腦 Trace code 都唔可以直接分析到個 State 點先可以 Reduce 到 Expected State

Redux 天生有好嚴格嘅 Pattern 迫你跟,但 Reduce 概念面對 Changes 係需要諗清楚設清楚先 Impl

MobX 天生好自由,所以要有一套 Architecture guard 住(自己做嚴格嘅 Pattern),由於 State Composition 比較直觀, Changes 好易就可以 Apply 而且一定係正確。但好多人用 MobX 冇一套 Architecture guard 住而覺得唔適合用係大 Project


via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)

TOP