hysryt / wiki

https://hysryt.github.io/wiki/
0 stars 0 forks source link

Flux #145

Open hysryt opened 4 years ago

hysryt commented 4 years ago

MVCはスケーリングできないのでFluxを使う

https://www.infoq.com/news/2014/05/facebook-mvc-flux/

FacebookはMVCがニーズに合わせてスケールアップできないとし、Fluxパターンを使用することを決定した。

MVCはすぐに複雑になる。 システムは新しい機能を追加するたびに指数関数的に複雑化する。 小規模なアプリケーションには適しているが、多くのモデルとビューが追加されると複雑さが爆発的に増大する。 モデルとビューの間で双方向にデータが流れるため、理解やデバッグが困難になる。

この問題に対してはコードをより予測可能な方法で構造化する必要がある。 Fluxは単一方向のデータフローのシステムアーキテクチャである。 単一方向のデータフローにより「予測可能な」「宣言可能な」Webユーザーインターフェースを構築できる。

Store にはアプリケーションのすべてのデータが含まれる。 Dispatcher は Action のトリガーを受け取りどのようにストアが更新されるかを決定する。 Store が更新されると View も更新され、オプションで Action も生成される。 Store -> View -> Action -> Dispatcher -> Store -> ...

Dispatcher は Flux アプリケーション内のすべてのデータフローを管理する中心的な存在となる。 Store はコールバックを提供し、Store内のデータはコールバック経由で更新する。 Action を受け取った Dispatcher はコールバックを呼び出す。

hysryt commented 4 years ago

Action typeプロパティとデータを持つ

Store アプリケーションの状態とロジックを持つ

Dispatcher Actionを処理し、Storeから提供されたコールバックを呼び出す。

View Storeの情報を適切に表示する。 Actionを作成しDispatcherに投げることもできる。