角度を使用してNGRXストアアーキテクチャの完全ガイド



NGRXとは
NGRXは、反応性アプリケーションを構築するための角度フレームワークの一種です.NGRXは完璧なライブラリをサポートしています.
  • グローバル・ローカル・ステートの管理
  • クリーナーコンポーネントアーキテクチャを促進するために、それは副作用の分離です.
  • エンティティコレクション管理.
  • 角度ルータとの統合
  • 多くの異なるタイプのアプリケーションを構築するとき、それは開発者経験を強化する開発者ツールを使用します.

  • パッケージ
    NGRXパッケージは主にこれらのカテゴリに分けられます
  • ストア- RXJ角度アプリケーションのグローバル状態管理のために使用.
  • 効果- @ ngrx/storeの副作用モデル.
  • ルータストア-接続のために@ ngrx/storeに角度ルータを接続してください.
  • エンティティ-レコードコレクションを管理するには、エンティティステートアダプタを使用します.
  • ComponentStore -ローカル/コンポーネントの状態を管理するためのスタンドアロンライブラリです.
  • データ
  • 簡単なエンティティデータ管理のためのデータ-拡張.
  • ビュー
  • 完全反応角度アプリケーションのためのコンポーネント拡張.
  • 開発ツール
  • ストアdevtools -それは、状態と時間旅行のデバッグの視覚的な追跡を可能にします.@ ngrx/store用の計装です.
  • schematics - NGRXライブラリを使用した角度アプリケーションはscaffoldingライブラリです.
  • 続きを読むA Complete Guide On Angular Rxjs Library
    次の図を参照してください.
  • NGRX Data EntityReaderは、アクションのEntityNameプロパティ(この例の主人公)を読み込みます.その後、ヒーローズのEntityCollectionReduceへのアクションと既存のエンティティコレクションの状態を転送します.
  • コレクション還元子は、EntityoP(操作)プロパティの動作に基づいてスイッチケースを選択します.その場合、アクションとコレクションの状態が処理されます.それは新しい(更新された)ヒーローコレクションに入れられます.
  • ストアは、その更新されたコレクションを持つ状態ツリーのエンティティキャッシュを更新します.
  • ビューでは、NGRXの観測可能なセレクタは、加入者への変更を検出し、報告します.
  • まず、ビュー/コンポーネントがEntityCollectionServiceを呼び出します.getall ()を使用して、主人公のQueryCountすべてのEntityActionをストアに送信します.
  • NGRXはギアにキック.
  • 元のEntityActionは、EntityEffectに行きます.
  • このエンティティ型のEntityDataServiceを選択します.データサービスはHTTPリクエストをサーバに送るのに使用されます
  • この効果は、HTTPレスポンスをヒーローズ付きの新しい成功アクション(または要求が失敗した場合のエラーアクション)に変更します
  • NGRX効果エフェクトは、そのアクションをストアに送信します.
  • 各構成要素を詳細に説明しましょう.

    アクション
    アクションはNGRXアーキテクチャの主なビルディングブロックの一つです.アクションは、我々のアプリケーション全体で発生するユニークなイベントを表します.
    アクションはNGRXで多くの方法で使用されます.アクションは、NGRXのシステムの入力と出力です.アクションは、イベントがどのように我々のアプリケーションで処理されるかを理解するのに役立ちます.
    アクションインターフェイス
    NGRXでの動作は単純なインターフェースで作られます:
    interface Action {  
    type: string; 
    }
    
    
    インターフェイスには1つのプロパティがあり、文字列として表される型です.Typeプロパティは、アプリケーションで送信されるアクションを実行するためのものです.ここで、型の値は[ source ]イベントの形で来ます.値は、どのカテゴリのアクションのコンテキストを提供するために使用され、そこからアクションが送られた場所です.アクションに追加のコンテキストまたはメタデータを提供するために、アクションにプロパティを追加します.
    以下にアクションの例を示します:
    {
     type: '[Auth API] Login Success' 
    }
    
    
    バックエンドAPIと相互作用した後に、この動作は成功した認証によって引き起こされるイベントを記述します.
    { 
    type: '[Login Page] Login',
       username: string;
    password: string;
     }
    
    
    この動作は、ユーザを認証しようとするときにログインページからログインボタンをクリックしたユーザによって引き起こされるイベントを実行する.ログインページから提供される追加のメタデータは、ユーザ名とパスワードとして定義されます.
    アクションを書き込む
    あなたのアプリケーション内で効果的なアクションを記述するいくつかのルールがあります.
  • upfront -それは理解し、事前にその機能の共有知識を得るために新しい機能を開発する前に行動を記述するために使用されます.
  • 分割-それはアクションを分類するイベントソースに基づいて.
  • 多く-あなたが書くより多くのアクションとして、より良いあなたのアプリケーションでフローを表現します.
  • イベント駆動-イベントの説明とそのイベントの処理を分離するイベントをキャプチャします.
  • 説明-それはより詳細な情報とユニークなイベントにターゲットにされている環境を提供します.
  • ログイン要求を開始している動作の例を見ましょう.
     import { createAction, props } from '@ngrx/store'; 
    export const login = createAction(
     '[Login Page] Login', 
    props<{ username: string; password: string }>()
     );
    
    
    CreateAction関数の上に関数を返します.呼び出されると、アクションインターフェイスの形でオブジェクトを返します.アクションの処理に必要な追加のメタデータを定義するには、propsメソッドを使用します.アクションクリエーターは、派遣されているアクションを構築するための安全で一貫した方法を提供します.
    派遣時にアクションを返すには、アクション作成者を使用します.
     onSubmit(username: string, password: string) { 
    store.dispatch(login({ username: username, password: password })); 
    }
    
    
    ログインアクションCreatorは、オブジェクトとしてユーザー名とパスワードを受け取り、[ログインページ]ログインのタイププロパティ、およびユーザー名とパスワードを追加のプロパティとしてプレーンJavaScriptオブジェクトを返します.
    返されるアクションは、アクションがどこから来たか、そして、どんな出来事が起こったかについて文脈を持ちます.
  • アクションのカテゴリは角括弧[]]内に保持されます.
  • カテゴリは、コンポーネントページ、バックエンドAPI、またはブラウザAPIのような特定の領域のグループアクションを作成するために使用されます.
  • カテゴリの後のログインテキストは、この行動から起こった出来事の記述です.この場合、ユーザー名とパスワードを認証しようとすると、ユーザーはログインページからログインボタンをクリックしました.
  • 信頼する検索AngularJS Development Company ? あなたの検索はここで終わります.

    還元剤
    NGRXの還元器は、我々のアプリケーションの1つの状態からもう一つの状態への遷移を扱うのに責任があります.還元関数は、どの動作を処理するかを決定することによって、これらの遷移を処理する.還元器は純粋な関数であり、与えられた入力に対して同じ出力を生成する.彼らは、それぞれの状態遷移を同期的に扱う副作用なしです.各還元子関数は現在の状態、最新のアクションを受け取り、新しく変更された状態または元の状態を返すかどうかを決定します.

    セレクタ
    セレクターは、ストア状態のピックアップのスライスに使用される純粋な関数です.この選択を最適化するために@ ngrx/storeはいくつかのヘルパー機能を提供します.状態セレクタのスライスを選択するとき、多くの特徴を提供する.特徴は:
  • 移植性
  • 記憶
  • 組成
  • 試験性
  • 安全性
  • createSelectorとCreateFeaturesメソッドを使用する場合、@ ngrx/storeは、セレクタ関数が呼び出された最新の引数を追跡します.最後の結果は、引数がセレクタ関数を再起動せずにマッチしたときに返すことができます.これは、特に高価な計算を実行するセレクタとパフォーマンスの利点を提供することができます.この練習はmemoizationとして知られています.

    結論
    このブログでは、NGRXとNGRXストアとは何かを学びました.私たちは、NGRXパッケージのカテゴリを介して状態、データ、ビュー、開発者のツールのように行っている.我々はまた、アーキテクチャとその動作の主要なコンポーネントを学んだことが、縮小とセレクタの例です.