このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
ctx.importAsync()
URL を指定して ESM モジュール または CSS を動的に読み込みます。RunJS の各シーンで利用可能です。サードパーティの ESM ライブラリが必要な場合は ctx.importAsync() を、UMD/AMD ライブラリの場合は ctx.requireAsync() を使用します。.css のアドレスを渡すと、スタイルが読み込まれ、ページに注入されます。
適用シーン
型定義
パラメータ
返回値
- 解析されたモジュールの名前空間オブジェクト(Promise の解決値)。
URL 形式の説明
- ESM と CSS: ESM モジュールに加えて、CSS の読み込みもサポートしています(
.cssの URL を渡すと、読み込み後にページへ注入されます)。 - 短縮形式: 設定がない場合、デフォルトで https://esm.sh が CDN プレフィックスとして使用されます。例えば、
vue@3.4.0は実際にはhttps://esm.sh/vue@3.4.0をリクエストします。 - ?deps: React に依存するライブラリ(
@dnd-kit/core、react-big-calendarなど)は、ページの React インスタンスとの競合による "Invalid hook call" を避けるため、?deps=react@18.2.0,react-dom@18.2.0を付与する必要があります。 - 自前 CDN: 環境変数を使用して、社内ネットワークや自前サービスを指定できます:
- ESM_CDN_BASE_URL: ESM CDN のベースアドレス(デフォルトは
https://esm.sh) - ESM_CDN_SUFFIX: オプションのサフィックス(例: jsDelivr の
/+esm) - 自前サービスについては nocobase/esm-server を参照してください。
- ESM_CDN_BASE_URL: ESM CDN のベースアドレス(デフォルトは
ctx.requireAsync() との違い
- ctx.importAsync(): ESM モジュール を読み込み、モジュールの名前空間を返します。モダンなライブラリ(Vue、dayjs などの ESM ビルド)に適しています。
- ctx.requireAsync(): UMD/AMD またはグローバルに公開されるスクリプトを読み込みます。主に ECharts や FullCalendar などの UMD ライブラリで使用されます。ライブラリが ESM と UMD の両方を提供している場合は、
ctx.importAsync()を優先してください。
示例
基本的な使い方
パッケージ名または完全な URL を使用して、ESM モジュールと CSS を動的に読み込む最も基本的な方法です。
ECharts の例
ECharts を使用して、棒グラフと折れ線グラフを含む売上概要チャートを描画します。
Tabulator の例
Tabulator を使用して、ページネーションと行クリックイベントをサポートするデータテーブルをブロック内にレンダリングします。
FullCalendar (ESM) の例
FullCalendar とそのプラグインを ESM 方式で読み込み、 基本的な月表示カレンダーをレンダリングする方法を示します。
dnd-kit のシンプルなドラッグ&ドロップの例
@dnd-kit/core を使用して、ブロック内で Box をターゲットエリアにドラッグする最小限のドラッグ&ドロップの例を実装します。
この例は @dnd-kit/core のみに依存しており、Box を指定されたエリアにドラッグしたときに通知を表示します。RunJS において ctx.importAsync と React を組み合わせて最もシンプルなドラッグ操作を実現する方法を示しています。
dnd-kit の並べ替え可能リストの例
dnd-kit の core / sortable / utilities を使用して、ドラッグによる並べ替えをサポートする垂直リストを実装します。
この例は @dnd-kit/core、@dnd-kit/sortable、@dnd-kit/utilities に基づいており、ドラッグで並べ替え可能なリストを実装し、ドラッグ終了後に順序を更新して「List reordered」と通知します。
react-big-calendar の例
react-big-calendar と date-fns によるローカライズを組み合わせ、現在のブロック内にイベント表示をサポートするカレンダーコンポーネントをレンダリン グします。
frappe-gantt の例
frappe-gantt を使用して、タスクの開始/終了時間と進捗状況を表示するガントチャートビューをレンダリングします。
@asseinfo/react-kanban の例
@asseinfo/react-kanban を利用して、Backlog や Doing などの 列を含む基本的なカンバンボードをレンダリングします。
注意事項
- 外部ネットワークまたは CDN に依存します。オフライン環境では、ESM_CDN_BASE_URL を自前サービスに向けるよう設定する必要があります。
- ライブラリが ESM と UMD の両方を提供している場合は、モジュールのセマンティクスが優れている
ctx.importAsync()を優先してください。 - React に依存するライブラリには必ず
?deps=react@18.2.0,react-dom@18.2.0を追加してください。バージョンはページの React と一致させる必要があります。一致しない場合、Invalid hook call エラーが発生する可能性があります。
関連情報
- ctx.requireAsync():UMD/AMD またはグローバルスクリプトの読み込み。ECharts や FullCalendar などの UMD ライブラリに適しています。
- ctx.render():コンテンツをコンテナにレンダリングします。

