JSSを使用したMVCアプリの静的生成に関する制限事項と回避策
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
既存のMVCアプリケーションをヘッドレスJSSアプリケーションに変換するプロセスには、いくつかの制限があります。
Next.jsアプリケーションのエクスポート
Next.js with next exportによって提供される静的エクスポート機能の使用に適用されるすべての制限が適用されます。
next exportは多言語アプリをサポートしていないため、languageEmbeddingを無効にする必要があります。
languageEmbeddingを無効にするには:
-
Sitecoreの設定を変更し、languageEmbeddingの値をneverに設定します。
さらに、画像をレンダリングするMVCコンポーネントがある場合は、Sitecoreサーバー上のメディア ファイルへのフル パスを指定する必要があります。
Sitecore Experience Edgeは、メディア ファイル用のCDNを提供し、画像のサーバー URLをすでに埋め込んでいます。
メディアソースURLにサーバーURLを含めるには:
-
Sitecoreの設定をMedia.AlwaysIncludeServerUrlに変更します。
Sitecoreのアナリティクスとパーソナライゼーション
JSSアプリで のSitecore分析とパーソナライゼーション に関するすべての制限が適用されます。
セッションベースの機能
アカウントログイン、カート情報、GDPRコンプライアンスなど、サーバー側のセッション情報(ASP.NETまたはCookie)に依存する機能は、静的生成では使用できませんNext.js。
セッションベースの機能を使用するには、次のいずれかを行う必要があります。
-
Next.jsサーバー側レンダリングルートを使用します。このアプローチは、Experience Edgeでは機能しません。
-
Next.jsリライトを使用して、インクリメンタル ストラテジーとしてSitecore CDへの完全なパススルーを許可します。たとえば、サイトのアカウント セクション全体を延期できます。
-
クライアント側のアプローチを使用するようにアプリケーションをリファクタリングします。これは、ヘッダーの条件付きLogin/LogoutやGDPRコンプライアンスの受け入れなど、サイトのすべてのページに表示されるコンポーネントに適したアプローチである可能性があります。
Sitecoreフォーム
既存のMVCフォームをJSSアプリケーションで機能させるには、MVCフォームラッパーがHTMLとしてレンダリングされ、Next.jsアプリケーションがフォームに必要なリダイレクトを持つように、いくつかの調整を行う必要があります。
Sitecore Formsは、RESTレイアウト サービスとサーバー側のレンダリングを使用している場合にのみ、Next.jsで機能します。
MVCフォームラッパーをHTMLとしてレンダリングするには:
-
MVCフォーム ラッパーの場合は、Sitecoreレイアウト サービスをHTMLを出力するように設定します。
フォーム固有のリダイレクトを設定するには:
-
Next.js JSSアプリのnext.config.jsファイルのredirectsセクションに、次のルールを追加します。
Next.jsアプリケーションにフォームを実装することを検討してください。