Primeros pasos
Qué cubre esta guía
Enlace al encabezadoEsta guía te ayuda a poner en marcha la capa de sincronización de render entre:
- un producto host que controla los componentes de UI disponibles;
- un entorno remoto independiente para extensiones.
@omnicajs/vue-remote se encarga del render sincronizado.
Las APIs del producto, la autenticación, el descubrimiento y la lógica de marketplace se resuelven por separado.
Instalación
Enlace al encabezadoyarn add @omnicajs/vue-remote @remote-ui/rpcIntegración con el IDE
Enlace al encabezadoPara que las template refs nativas del lado remoto se tipen como proxies de elementos remotos en *.remote.vue, agrega el plugin de Vue tooling:
{ "vueCompilerOptions": { "plugins": [ "@omnicajs/vue-remote/tooling" ] }}Qué puedes 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 del 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 inferencia más precisa. - Otros IDE: si usan
@vue/language-servero un cliente Vue compatible con Volar, también deberían respetarvueCompilerOptions.plugins.
Si estás desarrollando dentro de este repositorio en vez de consumir el paquete publicado, usa ./tooling.cjs en vueCompilerOptions.plugins.
1. Inicializar el entorno host
Enlace al encabezadoDel lado host:
- Registra los componentes permitidos con
createProvider(...). - Crea el receiver del canal de render con
createReceiver(). - Renderiza
HostedTreey pásaleprovider + receiver. - Inicia el entorno remoto (iframe o worker) y pásale
receiver.receivearun(...).
Consulta: Componentes del host y Resumen.
2. Inicializar el entorno remoto
Enlace al encabezadoDel lado remoto:
- Crea la raíz remota con
createRemoteRoot(channel, options). - Crea la aplicación con
createRemoteRenderer(root).createApp(...). - Define los componentes publicados 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 proceso de arranque estable:
- El host carga la URL del entorno 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 usar un worker dedicado en vez de un iframe, consulta Runtime de Web Worker. Para una configuración específica con iframe, consulta Integración con iframe. Si necesitas una conexión explícita por canal entre contenedores personalizados, consulta Transporte MessagePort. Para entornos separados por proceso en Electron o Tauri, consulta Transporte IPC de escritorio. Para sesiones entre procesos o incluso entre máquinas, consulta Transporte Socket. Para pruebas locales, también puedes ejecutar host y remoto dentro del mismo entorno usando Transporte en memoria (solo para desarrollo y pruebas). Si quieres una comparación directa entre modos, consulta Comparación de transportes.
4. Validar fronteras
Enlace al encabezadoAntes de ampliar la integración, revisa:
- que el host controle la allowlist de componentes expuestos;
- que las props y los eventos que cruzan entre entornos sean serializables;
- que el entorno remoto no dependa de APIs directas del DOM del navegador.
Qué sigue
Enlace al encabezado- Construir contratos seguros del host: Componentes del host.
- Modelar la UI remota y sus fronteras: Componentes remotos.
- Revisar el modelo de entorno independiente del transporte: Resumen.
- Ver la integración específica con iframe: Integración con iframe.
- Comparar los modos disponibles: Comparación de transportes.
- Revisar la topología y el ciclo de vida de worker: Runtime de Web Worker.
- Ver el modo de conexión explícita por canal: Transporte MessagePort.
- Revisar el puente entre procesos de escritorio: Transporte IPC de escritorio.
- Ver el modelo de puente por red o sesión: Transporte Socket.
- Revisar la configuración de un solo entorno para desarrollo y pruebas: Transporte en memoria.