RemotePage コンポーネント

外部 SPA と AEM の間でどのレベルの統合を行うかを決める際に、AEM 内で SPA を表示して編集できる必要があることはよくあります。RemotePage コンポーネントは、この目的のためのカスタムページコンポーネントです。

概要

RemotePage コンポーネントは、アプリケーションで生成された asset-manifest.json から必要なアセットをすべて取得し、これを使用して AEM 内の SPA +をレンダリングします。

  • RemotePage を使用すると、AEM ページコンポーネントの本文に SPA のスクリプトやスタイルシートを挿入できます。
  • 仮想フロントエンドコンポーネントを使用すると、AEM SPA エディターでセクションを編集可能としてマークできます。
  • これとともに、異なるドメインでホストされている SPA を AEM で編集可能にすることができます。

AEM の編集可能な外部 SPA の詳細については、AEM 内の外部 SPA の編集を参照してください。

要件

  • 開発での CORS の有効化
  • ページプロパティでのリモート URL の設定
  • AEM での SPA のレンダリング
  • Web アプリケーションは、次のいずれかのバンドラーアセットマニフェストを使用し、読み込まれるすべての CSS および JS ファイルを entrypoints property にリストする asset-manifest.json ファイルをドメインルートに公開する必要があります。
    • https://github.com/shellscape/webpack-manifest-plugin
    • https://github.com/webdeveric/webpack-assets-manifest
    • https://github.com/mugi-uno/parcel-plugin-bundle-manifest
      entrypoints プロパティの例
  • アプリケーションは、body 要素の下の <div id="root"></div> で初期化できる必要があります。アプリケーションで異なるマークアップをインスタンス化する必要がある場合は、sling:resourceSuperType="spa-project-core/components/remotepage を持つプロキシコンポーネントの HTL スクリプトで適宜調整する必要があります。

制限事項

  • RemotePage コンポーネントでは、実装がここにあるような。アセットマニフェストを提供することを想定しています。ただし、RemotePage コンポーネントは、React フレームワーク(および remote-page-next コンポーネントを介した Next.js)での動作のみがテストされているため、他のフレームワーク(Angular など)からのアプリケーションのリモート読み込みはサポートされていません。
  • AEM でリモートレンダリングを行う場合、アプリケーションのルート HTML ファイルに定義された内部 CSS と、ルート DOM ノードのインライン CSS は使用できません。

技術的詳細

AEM SPA プロジェクトの他の部分と同様、RemotePage コンポーネントもオープンソースです。RemotePage コンポーネントの技術的な詳細については、GitHub リポジトリーを参照してください。

このページ