web-dev-qa-db-ja.com

Angularの状態管理とは何ですか?そして、なぜそれを使うべきなのでしょうか?

私はAngularに不慣れで、この質問は非常に広いかもしれません。しかし、私は状態管理の使用法についてもっと学びたいと思っています。最近、私たちのプロジェクトの1つはNGXSライブラリを使用して状態管理を実装しました。しかし、私はそれがアプリケーションにもたらしたすべての利点を理解するには?

実装は非常に深く、高レベルでは、アプリケーションデータ(ユーザーが設定したもの)を運ぶアクションと、要求を処理し、必要に応じて次のステップにディスパッチするアクションのリスナーがあります。アプリケーションの使用法やパフォーマンスなどの点でこれがどのように異なるか、一般的にangular application。です。私は状態管理を理解する最初の段階なので、コードをたくさん書いているように感じます例-別のページにルーティングするためだけに、オブジェクトを保持する状態モーダルを実装し、アクションとそのアクションを実装するリスナーを宣言する必要がありました。

いくつかのドキュメントを調べて、状態管理を実装する方法の詳細を取得していますが、状態管理を実装する必要がある理由について正しい答えが得られません。

前もって感謝します!

12
ac184

まず、あなたの質問に答えるには、国家管理はAngularの用語ではなく、それを使用する必要がないことを知っておく必要があります。状態管理は [〜#〜] cqrs [〜#〜] 原則を実装するためのパターンであり、私はウィキペディアを引用しています:

すべてのメソッドは、アクションを実行するコマンドか、呼び出し元にデータを返すクエリのいずれかである必要がありますが、両方ではないことを示しています。

状態管理は、アプリケーションの単一の信頼できる情報源として機能します。

状態管理なしでアプリを構築できます。あなただけのサービスを使用することができ、あなたは行ってもいいです。アプリケーションに状態管理を追加すると、複雑さと定型が追加されますが、( https://stackoverflow.com/a/8820998/186054 から引用)の利点があります。

  1. 大規模なチーム-CQRSアーキテクチャを選択した場合は、開発タスクを人と人の間で簡単に分割できます。トップレベルの人々はドメインロジックに取り組み、あまり熟練していない開発者に通常のものを残します。
  2. 難しいビジネスロジック-CQRSは、ドメインロジックとインフラストラクチャ操作の混在を回避するように強制します。
  3. スケーラビリティの問題-CQRSを使用すると、優れた読み取りおよび書き込みパフォーマンスを実現でき、コマンド処理は複数のノードでスケールアウトでき、クエリは読み取り専用の操作であるため、高速読み取り操作を実行するように最適化できます。

最も人気のあるAngularの状態管理ライブラリは [〜#〜] ngrx [〜#〜] および [〜#〜] ngxs [〜#〜] です。

NGRXについては詳しく説明しませんが、簡単に言えば、実際の運用アプリケーションで実証済みです。

ただし、NGXSはangularの新しい状態管理ライブラリであり、NGRXのいくつかのアイデアを採用し、Angularが提供するツール( DI)。NGRXとNGXSの主な違いは、NGXSのボイラープレートが大幅に少ないことです。興味がある場合は、主な理由を読むことができます Angularの別の状態管理の理由

まとめると、大規模なアプリケーションの構築を計画している場合は、状態管理の使用を検討する必要がありますが、そうする必要はありません。

15
Eliya Cohen