single-spa
single-spa es un router open source en JavaScript para microfrontends que monta y desmonta aplicaciones independientes, incluso de frameworks distintos, según cambia la URL.
El núcleo de single-spa es un router pequeño. Registras aplicaciones y le indicas cuándo está activa cada una. Luego llama a sus funciones de ciclo de vida a medida que cambia la URL. Cada aplicación exporta tres funciones: bootstrap, mount y unmount. Paquetes de ayuda como single-spa-angular y single-spa-react generan estas funciones para cada framework.
El contrato consiste solo en esas funciones, así que single-spa puede ejecutar frameworks distintos en la misma página. Por eso es una opción frecuente en migraciones donde una aplicación AngularJS y una moderna tienen que convivir.
Ejemplo
import { registerApplication, start } from 'single-spa';
registerApplication({
name: 'legacy',
app: () => import('legacy-app'),
activeWhen: ['/admin'],
});
registerApplication({
name: 'reports',
app: () => import('reports-app'),
activeWhen: ['/reports'],
});
start();
Cuando el usuario pasa de /admin a /reports, single-spa desmonta la aplicación legacy y monta la nueva.
Confusión frecuente
single-spa coordina cuándo se montan las aplicaciones. No decide cómo se carga su código ni cómo se comparten las dependencias. Esa parte queda en manos de import maps, SystemJS o una herramienta de federación, y te toca elegir y configurar una.
Tampoco aísla las aplicaciones entre sí. El CSS global, las variables globales y varias copias de un framework pueden seguir chocando. Para una comparación con otras rutas de migración, revisa Reescribir, híbrido o microfrontends.
Por qué importa. Permite que una aplicación AngularJS legacy y una aplicación nueva compartan una página y un espacio de URLs mientras las rutas pasan de una a la otra. Es una de las principales alternativas a las plataformas basadas en federación.
Términos relacionados
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn