跳转到内容

概览

如果你想先快速选型,可以直接查看 传输方式对比

目标是一个扩展生态:

  • 任意产品都可以暴露扩展能力边界;
  • 第三方团队可以独立交付远程扩展;
  • @omnicajs/vue-remote 在宿主与远程运行时之间同步 UI 树。

@omnicajs/vue-remote 只负责渲染同步:

  • 宿主侧:createProvidercreateReceiverHostedTree
  • 远程侧:createRemoteRootcreateRemoteRendererdefineRemoteComponent
  • 更新通过通道合约传递,而传输实现本身是可替换的。

按设计不在范围内的内容:

  • 业务数据合约与产品 API;
  • 扩展发现、认证、计费、治理;
  • 市场策略与合规流程。

宿主产品与远程扩展应作为独立交付物存在。

host-product/
src/
extensions/
host-components/
runtime/
hostBridge.ts
remote-extension/
src/
entry.ts
App.vue
bridge/
  1. UI provider layer: 通过 createProvider(...) 暴露的宿主组件。
  2. Runtime transport layer: iframe、worker、window、MessagePort、桌面 IPC、socket 等。
  3. Business bridge layer: 产品特定的方法与数据。
  4. Security layer: 能力校验与生命周期策略执行。

无论使用何种传输方式,都应保持以下握手稳定:

  1. 宿主初始化运行时外壳与 receiver。
  2. 远程侧暴露 run/release
  3. 宿主调用 run(channel, hostBridge)
  4. 远程侧通过通道更新完成挂载与渲染。
  5. 会话以 release() 结束。

如果你关注的是非基线或偏研究型环境,请查看 实验能力