0Pricing
React Academy · Lección

Module Federation: importaciones dinámicas en tiempo de ejecución

Comprenda cómo Webpack Module Federation carga módulos remotos en tiempo de ejecución sin incluirlos en el bundle del host.

Module Federation: importaciones dinámicas en tiempo de ejecución es una lección gratuita de React Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

El problema que resuelve Module Federation

En una organización frontend con varios equipos, varias aplicaciones desplegadas de forma independiente suelen necesitar compartir componentes de interfaz y utilidades. Publicar el código en npm requiere aumentar la versión, realizar una nueva publicación y volver a desplegar por completo todas las aplicaciones consumidoras, lo que crea un acoplamiento estrecho entre los equipos y ciclos de iteración lentos.

El enfoque de npm y sus inconvenientes

El enfoque tradicional (publicar el código compartido como un paquete de npm) implica que actualizar un componente de botón compartido requiere: actualizar el paquete de npm, publicar una nueva versión, actualizar el package.json de cada aplicación consumidora, recompilar y volver a desplegar cada aplicación consumidora. Module Federation elimina todos estos pasos.

Qué hace Module Federation

Module Federation permite que una aplicación (un "remote") exponga módulos de JavaScript que otra aplicación (un "host") carga y ejecuta en tiempo de ejecución, sin recompilar ni volver a desplegar el host. Cuando el usuario carga la aplicación host, esta obtiene dinámicamente los módulos del remote según los necesita.

Compatibilidad nativa de Webpack 5

Webpack 5 incorporó Module Federation como una funcionalidad integrada de primer nivel mediante ModuleFederationPlugin. Antes de Webpack 5, unos patrones similares requerían una configuración manual compleja o plugins de terceros. El plugin gestiona automáticamente toda la carga dinámica y la administración del ámbito compartido.

Conceptos clave: remotes

Un remote es una aplicación desplegada de forma independiente que expone uno o varios módulos (componentes de React, utilidades o páginas de funcionalidades completas) para que otras aplicaciones los consuman. El remote genera un manifiesto remoteEntry.js que describe lo que expone y cómo cargarlo.

Conceptos clave: hosts

Un host es una aplicación que consume módulos de uno o varios remotes. El host hace referencia a los remotes por nombre y URL en su configuración de Webpack. Cuando el código del host importa un módulo remoto, el runtime de Module Federation lo obtiene y lo ejecuta dinámicamente desde la URL del remote.

Conceptos clave: módulos compartidos

Los módulos compartidos son bibliotecas (como React y React DOM) que solo deberían cargarse una vez, aunque tanto el host como el remote las incluyan. Al marcar React como un singleton compartido, Module Federation garantiza que solo se ejecute una versión de React, algo fundamental porque los hooks de React fallan cuando hay varias instancias.

El manifiesto remoteEntry.js

Al compilar un remote, Webpack genera un archivo remoteEntry.js con el nombre de archivo configurado. Este archivo es un manifiesto ligero y un script de arranque: declara qué módulos expone el remote, enumera las URL de sus chunks e inicializa el ámbito compartido. El host descarga primero este archivo para descubrir qué ofrece el remote.

Mecánica de carga en tiempo de ejecución

Cuando el host encuentra un import de un módulo remoto, comprueba si el código del remote ya está cargado. Si no lo está, obtiene remoteEntry.js de la URL del remote, inicializa el ámbito compartido (negociando las versiones de las bibliotecas compartidas) y, a continuación, descarga y ejecuta el chunk específico que contiene el módulo solicitado.

El despliegue independiente en la práctica

Un equipo despliega una nueva versión de su remote (con el componente Button actualizado) sin modificar la aplicación host. El siguiente usuario que cargue el host obtiene automáticamente el nuevo Button porque el host siempre obtiene el archivo remoteEntry.js actual desde la URL del remote. No es necesario recompilar ni volver a desplegar el host, ni coordinarse con otros equipos.

Module Federation frente a los iframes

Un patrón de microfrontends más antiguo utiliza iframes para aislar las secciones propiedad de cada equipo. Los iframes proporcionan un aislamiento sólido, pero dificultan enormemente compartir el estado, gestionar el enrutamiento de las URL y mantener estilos coherentes. Module Federation mantiene todo en el mismo contexto de JavaScript, lo que permite compartir el enrutamiento, el estado de autenticación y los estilos.

Manifiesto remoto de Module Federation

¿Cuál es la función de remoteEntry.js en Module Federation?

Resumen de la lección

Module Federation resuelve el problema del despliegue independiente del código frontend compartido al permitir la carga de módulos en tiempo de ejecución. Los remotes exponen módulos mediante remoteEntry.js; los hosts los consumen dinámicamente sin recompilar. Los singletons compartidos (React, React DOM) evitan la carga duplicada de bibliotecas. Esta arquitectura permite un verdadero despliegue independiente: actualice un remote y todas las aplicaciones host verán el cambio de inmediato.

Preguntas frecuentes

¿La lección «Module Federation: importaciones dinámicas en tiempo de ejecución» es gratis?

Sí — el texto completo de «Module Federation: importaciones dinámicas en tiempo de ejecución» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Module Federation: importaciones dinámicas en tiempo de ejecución»?

Comprenda cómo Webpack Module Federation carga módulos remotos en tiempo de ejecución sin incluirlos en el bundle del host. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Module Federation: importaciones dinámicas en tiempo de ejecución»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Module Federation: importaciones dinámicas en tiempo de ejecución
  2. Configuración de aplicaciones React host y remotas
  3. Compartir estado y enrutamiento entre remotos
  4. Control de versiones, despliegue y orquestación
← Volver a React Academy