0Pricing
React Academy · Lezione

Module Federation: import dinamici a runtime

Comprenda come Webpack Module Federation carica moduli remoti a runtime senza inserirli nel bundle dell’host.

Module Federation: import dinamici a runtime è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Il problema risolto da Module Federation

In un’organizzazione frontend composta da più team, diverse applicazioni distribuite indipendentemente devono spesso condividere componenti UI e utility. La pubblicazione su npm richiede un incremento della versione, una nuova release e il redeploy completo di ogni applicazione che utilizza il pacchetto, creando uno stretto accoppiamento tra i team e rallentando i cicli di iterazione.

L’approccio npm e i suoi svantaggi

L’approccio tradizionale, cioè pubblicare il codice condiviso come pacchetto npm, significa che per aggiornare un componente button condiviso occorre: aggiornare il pacchetto npm, pubblicare una nuova versione, aggiornare il package.json di ogni app che lo utilizza, ricompilare e ridistribuire ogni app che lo utilizza. Module Federation elimina tutti questi passaggi.

Cosa fa Module Federation

Module Federation consente a un’applicazione, chiamata "remote", di esporre moduli JavaScript che un’altra applicazione, chiamata "host", carica ed esegue a runtime, senza ricompilare né ridistribuire l’host. Quando l’utente carica l’app host, questa recupera dinamicamente i moduli del remote quando necessario.

Supporto nativo in Webpack 5

Webpack 5 ha introdotto Module Federation come funzionalità integrata di prima classe tramite ModuleFederationPlugin. Prima di Webpack 5, per ottenere pattern simili erano necessarie configurazioni manuali complesse o plugin di terze parti. Il plugin gestisce automaticamente tutto il caricamento dinamico e la gestione dell’ambito condiviso.

Concetti chiave: remote

Un remote è un’applicazione distribuita indipendentemente che espone uno o più moduli, come componenti React, utility o intere pagine funzionali, affinché altre applicazioni possano utilizzarli. Il remote genera un manifest remoteEntry.js che descrive ciò che espone e come caricarlo.

Concetti chiave: host

Un host è un’applicazione che utilizza moduli provenienti da uno o più remote. L’host fa riferimento ai remote tramite nome e URL nella configurazione di Webpack. Quando il codice dell’host importa un modulo remote, il runtime di Module Federation lo recupera ed esegue dinamicamente dall’URL del remote.

Concetti chiave: moduli condivisi

I moduli condivisi sono librerie, come React e React DOM, che devono essere caricate una sola volta, anche se sono incluse sia nell’host sia nel remote. Configurando React come singleton condiviso, Module Federation garantisce che venga eseguita una sola versione di React, aspetto fondamentale perché gli hook di React smettono di funzionare in presenza di più istanze.

Il manifest remoteEntry.js

Quando si compila un remote, Webpack genera un file remoteEntry.js con il nome configurato. Questo file è un manifest leggero e uno script di bootstrap: dichiara i moduli esposti dal remote, elenca gli URL dei relativi chunk e inizializza l’ambito condiviso. L’host scarica prima questo file per scoprire cosa offre il remote.

Meccanismi di caricamento a runtime

Quando l’host incontra un import da un modulo remote, verifica se il codice del remote è già stato caricato. In caso contrario, recupera remoteEntry.js dall’URL del remote, inizializza l’ambito condiviso negoziando le versioni delle librerie condivise, quindi scarica ed esegue il chunk specifico che contiene il modulo richiesto.

Il deployment indipendente nella pratica

Un team distribuisce una nuova versione del proprio remote, contenente un componente Button aggiornato, senza modificare l’applicazione host. Il prossimo utente che carica l’host riceve automaticamente il nuovo Button, perché l’host recupera sempre il file remoteEntry.js corrente dall’URL del remote. Nessuna ricompilazione dell’host, nessun redeploy dell’host e nessun coordinamento necessario.

Module Federation e iframe

Un pattern di micro-frontend più datato utilizza gli iframe per isolare le sezioni gestite dai team. Gli iframe offrono un forte isolamento, ma rendono estremamente difficili la condivisione dello stato, il routing degli URL e la gestione degli stili. Module Federation mantiene tutto nello stesso contesto JavaScript, consentendo di condividere routing, stato di autenticazione e stili coerenti.

Manifest remote di Module Federation

Qual è il ruolo di remoteEntry.js in Module Federation?

Riepilogo della lezione

Module Federation risolve il problema del deployment indipendente del codice frontend condiviso, consentendo il caricamento dei moduli a runtime. I remote espongono i moduli tramite remoteEntry.js; gli host li utilizzano dinamicamente senza ricompilare. I singleton condivisi, come React e React DOM, impediscono il caricamento duplicato delle librerie. Questa architettura consente un vero deployment indipendente: aggiornando un remote, tutte le applicazioni host vedono immediatamente la modifica.

Domande Frequenti

La lezione «Module Federation: import dinamici a runtime» è gratuita?

Sì — il testo completo di «Module Federation: import dinamici a runtime» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Module Federation: import dinamici a runtime»?

Comprenda come Webpack Module Federation carica moduli remoti a runtime senza inserirli nel bundle dell’host. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Module Federation: import dinamici a runtime»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Module Federation: import dinamici a runtime
  2. Configurazione delle app React host e remote
  3. Condividere stato e routing tra remoti
  4. Versionamento, distribuzione e orchestrazione
← Torna a React Academy