Open hysryt opened 4 years ago
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 はコールバックを呼び出す。
Action typeプロパティとデータを持つ
Store アプリケーションの状態とロジックを持つ
Dispatcher Actionを処理し、Storeから提供されたコールバックを呼び出す。
View Storeの情報を適切に表示する。 Actionを作成しDispatcherに投げることもできる。
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 はコールバックを呼び出す。