クイックスタート
このガイドで扱う内容
見出しへのリンクこのガイドでは、次の間にあるレンダリング同期レイヤーを立ち上げます:
- 許可された UI コンポーネントを管理するホスト製品。
- 独立して動作するリモート拡張ランタイム。
@omnicajs/vue-remote が同期レンダリングを担当します。
ビジネス API、認証、ディスカバリ、マーケットプレイスのロジックは周辺ツールに残します。
インストール
見出しへのリンクyarn add @omnicajs/vue-remote @remote-ui/rpcIDE ツール
見出しへのリンク*.remote.vue 内のネイティブ template ref をリモート要素プロキシとして型付けするには、Vue tooling プラグインを追加します:
{ "vueCompilerOptions": { "plugins": [ "@omnicajs/vue-remote/tooling" ] }}期待できること:
*.remote.vue内の<div ref="panel" />はHTMLDivElementではなく、@omnicajs/vue-remote/remoteのリモートプロキシとして推論されます。useTemplateRef(...)、ref(null)、shallowRef(null)も、ネイティブ ref では同じリモート境界モデルに従います。- ホストコンポーネントの ref はコンポーネントインスタンスの型付けを維持します。
IDE の推奨:
- VS Code:
Vue - Official拡張を使います。 - PhpStorm / WebStorm:
Vue Language Server (Volar)を使い、最も正確な型評価のために service-powered type engine を有効にします。 - その他の IDE:
@vue/language-serverまたは Volar 互換の Vue 言語クライアントを使っているなら、vueCompilerOptions.pluginsを解釈できるはずです。
公開済みパッケージを使うのではなく、このリポジトリ内で開発している場合は vueCompilerOptions.plugins に ./tooling.cjs を使ってください。
1. ホストランタイムを立ち上げる
見出しへのリンクホスト側では:
createProvider(...)でホストコンポーネントを登録する。createReceiver()でレンダーチャネル receiver を作る。HostedTreeを描画し、provider + receiverを渡す。- リモートランタイム(iframe / worker)を起動し、
receiver.receiveをrun(...)に渡す。
参照: ホストコンポーネント、概要。
2. リモートランタイムを立ち上げる
見出しへのリンクリモート側では:
createRemoteRoot(channel, options)でリモート root を作る。createRemoteRenderer(root).createApp(...)でアプリを作る。defineRemoteComponent(...)でホスト公開コンポーネントを定義する。run(...)中で root と app をマウントし、release()でクリーンアップする。
参照: リモートコンポーネント、概要。
3. ホストとリモートを接続する
見出しへのリンクチャネルトランスポート、通常は @remote-ui/rpc を使い、安定したハンドシェイクを保ちます:
- ホストがリモートランタイム URL を読み込む。
- リモートが
run/releaseを公開する。 - ホストが
run(channel, hostBridge)を呼ぶ。 - リモートがチャネルを通じて UI をマウントする。
- セッションは
release()で終わる。
iframe より専用 worker ランタイムを使いたいなら Web Worker ランタイム を参照してください。 iframe 固有の設定は Iframe 統合 を参照してください。 カスタムコンテナ間で明示的にチャネルハンドシェイクを行いたいなら MessagePort トランスポート を参照してください。 Electron / Tauri のようなプロセス分離ランタイムでは デスクトップ IPC トランスポート を参照してください。 クロスプロセスやクロスマシンのセッションでは Socket トランスポート を参照してください。 ローカルのハーネスやテストなら インメモリトランスポート で同一ランタイムにホストとリモートを載せることもできます(dev/test のみ)。 横並び比較をしたい場合は トランスポート比較 を参照してください。
4. 境界を検証する
見出しへのリンクさらに広げる前に、次を確認してください:
- ホストが公開コンポーネントの allowlist を制御している。
- ランタイムをまたぐ props / events がシリアライズ可能である。
- リモートランタイムがブラウザの直接 DOM API に依存していない。
次にやること
見出しへのリンク- 安全なホスト契約を作る: ホストコンポーネント。
- リモート UI と境界をモデル化する: リモートコンポーネント。
- トランスポート非依存のランタイムモデルを見る: 概要。
- iframe 固有の接続モデルを見る: Iframe 統合。
- ランタイムモードを横並び比較する: トランスポート比較。
- worker 固有のトポロジーとライフサイクルを見る: Web Worker ランタイム。
- 明示的なチャネル接続モードを見る: MessagePort トランスポート。
- デスクトップのプロセス間ブリッジを見る: デスクトップ IPC トランスポート。
- ネットワーク / セッションブリッジを見る: Socket トランスポート。
- dev/test 用の単一ランタイム構成を見る: インメモリトランスポート。
- イベント修飾子のサポートとバンドラ設定を見る: イベント修飾子。