JSS Vue.jsサンプルアプリにおけるルーティングと状態管理

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

サンプルアプリはレイアウトサービス(または切断モードのローカル ルートデータファイル )に基づく動的ルーティングを使用し、ルートやナビゲーションの変更によってアプリの状態変更をトリガーします。主要な実行フローの追跡はルート設定から始めなければなりません。

!ヒントこの実行フローにはSitecoreJssStoreプラグインが言及されています。プラグインは開発者がSitecoreコンテキストデータやルーティングデータにアクセスするのに役立ちます。

クライアント側ルーティング

src/main.jsファイルのアプリの主要なクライアント側エントリーポイントから、以下はクライアント側ルーティングの流れを説明します。

  • ファイル src/main.jsでは、サーバー側レンダリング(SSR)および状態データが収集され、src/createApp.jsに渡されます。
  • ファイルsrc/createApp.jsでは、Vueアプリインスタンスが src/router.js で定義されたアプリルーターとともに作成・設定され、レンダリングはsrc/AppRoot.vueに引き継がれます。アプリに初期の状態/ルートデータが提供されると、アプリケーションはファイルsrc/lib/SitecoreJssStorePlugin.jsにあるカスタマイズ可能なVueプラグインを使って状態を設定し管理JSS 。
  • ファイル src/AppRoot.vueでは、 コンポーネントが現在のルートに合わせてコンポーネントをレンダリングする責任を負っています。src/router.jsで定義されています。
  • ファイル src/router.jsでは、ルーターがアプリのルート変更に応答し、それをsrc/RouteHandler.vue コンポーネントに渡すように設定されています。
  • ファイル src/RouteHandler.vueでは、ルート/レイアウトサービスデータがSitecoreJssStorePlugin によってVueリアクティブデータオブジェクトに提供されます。初期データがない場合は、現在のルートのレイアウトサービスデータを取得し、アプリのルートおよび言語の状態が更新されます。その後のルート変更はsrc/lib/SitecoreJssStorePlugin.jsを通じてグローバルアプリの状態を更新します。
  • ファイル src/RouteHandler.vueでは、実際のアプリマークアップレンダリングがLayout.vueコンポーネントに渡されます。グローバルアプリ状態はリアクティブデータオブジェクトにバインドされているため、新しいレイアウトサービス/ルートデータが受信されるとsrc/Layout.vueコンポーネントは再レンダリングされます。また、グローバルアプリステートは src/Layout.vue外に存在するコンポーネントがルートやコンテキストデータの変更に反応する方法を提供します。
  • ファイルsrc/Layout.vueでは、JSSアプリのシェルHTMLとグローバル要素、そしてルートのプレースホルダーがレンダリングされます。
  • ルートの残りの構造はルートデータによって定義され、各プレースホルダーにどのコンポーネントとそのコンテンツデータが存在するかを定義します。

サーバーサイドルーティング

VueアプリがNodeサーバーによってプリレンダリングされると、最初の応答でクライアントにHTMLを返します。つまり、ルートデータフローはクライアント側のルーティングに似ていますが、いくつかの重要な違いがあります。

以下は、サーバー側のルートデータフローがクライアント側のルーティングとどのように異なるかを説明します。

  • 最初のステップは適用モードによって異なります:
    • 統合モードのみでは、Sitecoreはリクエストを受け取り、サーバー側でルートを解析し、リクエストされたアイテムがJSSアプリケーションによって処理されているか、またどのバンドルを実行するかを決定します。
    • ヘッドレスモードのみでは、Node SSRプロキシがリクエストを受け取り、それをSitecoreレイアウトサービスに渡します。
  • ノードホストはserver/server.jsファイルにあるサーバーバンドルからrenderView関数を呼び出します。関数の引数にはルートデータ/レイアウトサービスの出力が含まれます。
  • renderView関数は以下の手順を実行します。
    • サーバー側レンダリング(レイアウトサービス、辞書)で使用するためのデータを受け取ります。
    • クライアント側レンダリングで使用される src/createApp.js ファイルを通じてアプリを作成し、初期化します。
    • ファイル src/createApp.jsでは、SSRデータが src/lib/SitecoreJssStorePlugin.js プラグインを使ってアプリケーションの初期状態に設定されます。
    • Vueツールを使ってアプリをHTMLにレンダリングします。
    • レンダリングされたアプリをindex.htmlテンプレートに埋め込み、メタデータとSSR状態を設定します。SSR状態(window.__JSS_STATE__)はクライアント上でアプリの状態を再ハイドレートするために使われ、初期ルートデータをLayout Serviceに呼び出す必要がなくなります。
    • 最終的なHTMLでレンダリングコールバック関数を呼び出します。
この記事を改善するための提案がある場合は、 お知らせください!