出典:ArcGIS Experience Builder - Guide - Share code between widgets
1 つのビジネス ドメインに対して複数のウィジェットを開発する場合、それらの間でコードを共有したいケースがあります。このページでは、このような場合に Experience Builder がどのように役立つかを紹介します。
Experience Builder には、ウィジェット間でコードを共有するための 2 つの方法が用意されています。
import {} from ''
は使用できません。 また、共有するコードは ‘chunks’ フォルダーにコンパイルされますが、このフォルダーには多数のファイルが含まれているため、メンテナンスが困難になる可能性があります。この方法でウィジェット間でコードを共有する必要がある場合、ベスト プラクティスはフォルダーを作成することです。コードを共有する必要があるウィジェットをフォルダーに配置し、共有コードを格納する共通フォルターを作成します。フォルダー構造は次のようになります。
widgets/
your-folder/
common/
widget1/
widget2/
common フォルダーでは、export const sharedFunction = () => {}
のように一般的な ES6 の export を使って共有するコードをエクスポートできます。widget1 と widget2 フォルダーでは、import('../../../common/my-module').then()
のようにダイナミック ローディングを使用して共有するコードを読み込めます。
コンパイル後、共有コードは widgets/chunks
フォルダーに配置されます。
完成例については、ダイナミック ローディングを参照してください。
この方法でウィジェット間でコードを共有する必要がある場合は、以下の手順を行います。
widgets
フォルダーの下に shared-code
フォルダーを作成します。フォルダー名は shared-code
でなければならないことに注意してください。shared-code
フォルダーに配置します。フォルダー内のすべての .ts
および .tsx
ファイルは共有エントリーとしてコンパイルされます。ベスト プラクティスのフォルダー構造は以下の通りです。shared-code/
entry1.ts
entry2.tsx
lib/
entry1/
module1.ts
module2.ts
entry2/
module1.ts
module2.ts
上記のフォルダー構造では、entry1
と entry2
はコンパイル時に自動的に作成されます。
国際化をサポートするには、shared-code
フォルダー内、または各 entry フォルダー内に、例えば shared-code/translations
や shared-code/lib/entry1/translations
のように、translations
フォルダーを作成してください。translations
フォルダーの構造は、ウィジェットの translations
フォルダーと同じです。
import { sampleFunction } from 'widgets/shared-code/entry1'
コンパイル後、共有エントリーは widgets/shared-code
フォルダーに配置されます。
完成例については、共有エントリーを参照してください。