WU / DOCSUNIVERSAL MICROFRONTENDS
ES

Arquitectura políglota

Distingue el CLI, el host, el runtime, las aplicaciones y la biblioteca visual antes de conectar frameworks.

Cinco responsabilidades distintas

Un shell es la página que reúne las aplicaciones; un microfrontend es cada aplicación que puede montar. El runtime WU conecta ambas partes. El CLI prepara los archivos y herramientas con los que las desarrollas.

La tabla utiliza la arquitectura de este portal como ejemplo. Puedes elegir otro shell y otros componentes visuales: Astro y Lit no son requisitos del runtime WU.

Pieza Qué posee Qué entrega
WU CLI Generación, desarrollo y compilación del workspace Archivos, configuración, procesos y salida compilada
Shell Astro URLs globales, navegación y composición de página HTML de documentación y slots para aplicaciones
WU Framework Registro, carga y ciclo de vida; servicios de comunicación Un contrato común para aplicaciones independientes
Microfrontend Una capacidad funcional y sus recursos Implementación de mount/unmount y estado propio
Biblioteca Lit Controles y contratos visuales Custom Elements consumibles desde distintos frameworks

El CLI trabaja durante desarrollo y compilación. El runtime se ejecuta en el navegador. Astro puede producir páginas sin JavaScript de framework; las partes interactivas se cargan mediante módulos cliente.

La URL pertenece al shell

Un shell necesita decidir qué URL muestra qué contenido, cómo funciona atrás/adelante y a dónde se mueve el foco. WU no incluye un router público que puedas invocar como wu.router o wu.routes. La metadata de rutas no implementa por sí misma navegación.

En este portal, Astro genera /docs/.../, /labs/ y /sources/. Se usan enlaces HTML normales. Un cambio de documento descarga la página anterior y crea un nuevo contexto de página. No hay una SPA oculta ni promesas de preservar estado entre documentos.

Un producto con shell persistente puede usar History API y un router propio. Allí debe serializar las transiciones: desmontar la app anterior, montar la siguiente, actualizar título/foco y gestionar fallos. Es una responsabilidad adicional del host.

Una capacidad por microfrontend

El laboratorio contiene dos capacidades deliberadamente pequeñas:

  • Constructor de comandos: transforma una configuración elegida por el lector en una receta de CLI. React posee el estado y adapta eventos DOM.
  • Inspector del runtime: muestra y modifica estado compartido, recibe eventos y permite observar limpieza. Vue posee esa lógica.

No se convierte cada botón o tarjeta en una aplicación WU. Los botones, formularios y paneles viven en componentes Lit; no necesitan despliegue ni lifecycle de MFE propio.

El contrato de montaje

Un lifecycle explícito deja visible qué recursos crea la app y quién los destruye:

import { wu } from 'wu-framework';

wu.define('saludo', {
  mount(container) {
    const message = document.createElement('p');
    message.textContent = 'Aplicación montada por WU';
    container.append(message);
  },
  unmount(container) {
    container.replaceChildren();
  }
});

Esto define la implementación. El host debe inicializar el registro/configuración de la aplicación y llamar a mount; una definición no es sinónimo de que ya esté visible. Consulta el manual del framework para la forma exacta del manifest y de wu.init().

Estado local, DOM y comunicación entre apps

Usa el mecanismo más cercano a la relación que quieres expresar:

Relación Mecanismo
Estado interno de React o Vue Estado del framework local
Datos de una app hacia un control Lit Propiedades del Custom Element
Intención de un control hacia su app Evento DOM tipado
Hecho que interesa a otras apps Event bus WU
Dato compartido observable Store WU
Servicio versionado entre proveedores/consumidores Contracts WU

No publiques objetos mutables del store como API visual. Transmite datos y eventos, y cancela las suscripciones cuando la app se desmonta.

Aislamiento y confianza

El portal usa sandbox: 'module'. Los módulos se ejecutan en el mismo contexto JavaScript; no es una frontera para código hostil. Los componentes Lit tienen Shadow DOM para sus estilos, pero Shadow DOM no impide acceder al contexto global.

Las aplicaciones de este proyecto son código local confiable. Las capabilities de la facade acotan las operaciones que hacen a través de ella; no convierten automáticamente un módulo arbitrario en código seguro. Los modos strict, eval, proxy y none tienen contratos distintos y se documentan con sus límites en el manual.

Una interfaz coherente

El sistema visual del portal utiliza fondo negro, texto hueso, rojo de señalización, estados lima y divisiones finas. Las páginas de lectura conservan tamaño de texto suficiente, foco visible y tablas desplazables.

La composición estática de documentos pertenece a Astro. Los controles interactivos se implementan en Lit. React y Vue no introducen una segunda familia de botones y formularios.

Referencias

WU SE CONSTRUYE CONTIGO

¿Encontraste un bug? ¿Tienes una idea?

Tu experiencia mejora WU. Cuéntanos qué falla o ayuda a sostener su desarrollo.