Primeros pasos
Qué cubre esta guía
Enlace al encabezadoEsta guía te ayuda a arrancar la capa de sincronización de render entre:
- un producto host que controla los componentes de UI permitidos;
- un runtime remoto independiente para extensiones.
@omnicajs/vue-remote se encarga del renderizado sincronizado.
Las APIs de negocio, la auth, el discovery y la lógica de marketplace permanecen en tooling adyacente.
Instalación
Enlace al encabezadoyarn add @omnicajs/vue-remote @remote-ui/rpcTooling para IDE
Enlace al encabezadoPara que las template refs nativas del lado remoto se tipen como proxies de elementos remotos en *.remote.vue, añade el plugin de tooling de Vue:
{ "vueCompilerOptions": { "plugins": [ "@omnicajs/vue-remote/tooling" ] }}Qué esperar:
<div ref="panel" />dentro de*.remote.vuese infiere como un proxy remoto de@omnicajs/vue-remote/remote, no comoHTMLDivElement.useTemplateRef(...),ref(null)yshallowRef(null)siguen el mismo modelo de frontera remota para refs nativas.- Las refs a componentes host conservan el tipado de instancia de componente.
Recomendaciones para IDE:
- VS Code: usa la extensión
Vue - Official. - PhpStorm / WebStorm: usa
Vue Language Server (Volar)y habilita el motor de tipos basado en servicios para obtener la evaluación más precisa. - Otros IDE: si están basados en
@vue/language-serveru otro cliente Vue compatible con Volar, también deberían respetarvueCompilerOptions.plugins.
Si estás desarrollando dentro de este repositorio en lugar de consumir el paquete publicado, usa ./tooling.cjs en vueCompilerOptions.plugins.
1. Inicializar el runtime host
Enlace al encabezadoEn el lado host:
- Registra los componentes host con
createProvider(...). - Crea el receiver del canal de render con
createReceiver(). - Renderiza
HostedTreey pásaleprovider + receiver. - Inicia el runtime remoto (iframe/worker) y pasa
receiver.receivearun(...).
Consulta: Componentes del host y Resumen.
2. Inicializar el runtime remoto
Enlace al encabezadoEn el lado remoto:
- Crea la raíz remota con
createRemoteRoot(channel, options). - Crea la app con
createRemoteRenderer(root).createApp(...). - Define los componentes expuestos por el host mediante
defineRemoteComponent(...). - Monta la raíz y la app dentro de
run(...)y limpia enrelease().
Consulta: Componentes remotos y Resumen.
3. Conectar host y remoto
Enlace al encabezadoUsa un transporte por canal, normalmente @remote-ui/rpc, y mantén un handshake estable:
- El host carga la URL del runtime remoto.
- El remoto expone
run/release. - El host llama a
run(channel, hostBridge). - El remoto monta la UI a través del canal.
- La sesión termina con
release().
Si prefieres un worker dedicado en lugar de transporte por iframe, consulta Runtime de Web Worker. Para una configuración específica de iframe, consulta Integración con iframe. Para handshakes explícitos de canal entre contenedores personalizados, consulta Transporte MessagePort. Para runtimes separados por proceso en Electron/Tauri, consulta Transporte IPC de escritorio. Para sesiones entre procesos o entre máquinas, consulta Transporte Socket. Para harnesses locales y pruebas, también puedes ejecutar host + remoto en un solo runtime mediante Transporte en memoria (solo dev/test). Para una guía comparativa lado a lado, consulta Comparación de transportes.
4. Validar fronteras
Enlace al encabezadoAntes de seguir ampliando, verifica:
- que el host controla la allowlist de componentes expuestos;
- que las props/eventos que cruzan runtimes son serializables;
- que el runtime remoto no depende de APIs directas del DOM del navegador.
Siguiente paso
Enlace al encabezado- Construir contratos host seguros: Componentes del host.
- Modelar la UI remota y sus fronteras: Componentes remotos.
- Ver el modelo de runtime agnóstico al transporte: Resumen.
- Ver el cableado específico de iframe: Integración con iframe.
- Comparar modos de runtime lado a lado: Comparación de transportes.
- Ver la topología y el ciclo de vida específicos de worker: Runtime de Web Worker.
- Ver el modo de cableado explícito por canal: Transporte MessagePort.
- Ver el modo de puente entre procesos de escritorio: Transporte IPC de escritorio.
- Ver el modelo de puente de red/sesión: Transporte Socket.
- Ver la configuración de un solo runtime para dev/test: Transporte en memoria.
- Ver el soporte de modificadores de eventos y la configuración del bundler: Modificadores de eventos.