React Academy · leksjon

Module Federation: Dynamiske importer ved kjøring

Forstå hvordan Webpack Module Federation laster inn eksterne moduler ved kjøring uten å pakke dem inn i verten.

Leksjon 1 av 413 trinn

Module Federation: Dynamiske importer ved kjøring er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.

Problemet Module Federation løser

I en frontend-organisasjon med flere team trenger flere applikasjoner som distribueres uavhengig, ofte å dele UI-komponenter og hjelpefunksjoner. Publisering til npm krever en versjonsøkning, en ny utgivelse og full utrulling av alle applikasjoner som bruker pakken – noe som skaper tett kobling mellom teamene og langsomme iterasjonssykluser.

npm-tilnærmingen og ulempene

Den tradisjonelle tilnærmingen (å publisere delt kode som en npm-pakke) innebærer at en oppdatering av en delt knappkomponent krever følgende: oppdater npm-pakken, publiser en ny versjon, oppdater package.json i alle applikasjoner som bruker pakken, bygg og rull ut alle disse applikasjonene på nytt. Module Federation fjerner alle disse trinnene.

Hva Module Federation gjør

Module Federation gjør det mulig for én applikasjon (en "remote") å eksponere JavaScript-moduler som en annen applikasjon (en "host") laster inn og kjører under kjøring, uten å bygge eller rulle ut hosten på nytt. Når brukeren laster inn host-applikasjonen, henter den dynamisk remote-modulene ved behov.

Innebygd støtte i Webpack 5

Webpack 5 introduserte Module Federation som en førsteklasses, innebygd funksjon via ModuleFederationPlugin. Før Webpack 5 krevde tilsvarende mønstre omfattende manuell konfigurasjon eller tredjepartsplugin-moduler. Plugin-modulen håndterer all dynamisk lasting og administrasjon av shared scope automatisk.

Viktige konsepter: remotes

En remote er en uavhengig utrullet applikasjon som eksponerer én eller flere moduler – React-komponenter, hjelpefunksjoner eller hele funksjonssider – som andre applikasjoner kan bruke. Remoten bygger et remoteEntry.js-manifest som beskriver hva den eksponerer, og hvordan det lastes inn.

Viktige konsepter: hosts

En host er en applikasjon som bruker moduler fra én eller flere remotes. Hosten refererer til remotes med navn og URL i Webpack-konfigurasjonen. Når koden i hosten importerer en remote-modul, henter og kjører Module Federation-kjøremiljøet den dynamisk fra URL-en til remoten.

Viktige konsepter: delte moduler

Delte moduler er biblioteker (som React og React DOM) som bare skal lastes inn én gang, selv om både hosten og remoten inkluderer dem. Ved å merke React som en delt singleton sørger Module Federation for at bare én React-versjon kjører – noe som er avgjørende fordi Reacts hooks slutter å fungere med flere instanser.

Manifestet remoteEntry.js

Når en remote bygges, genererer Webpack en remoteEntry.js-fil med det konfigurerte filnavnet. Denne filen er et lettvektsmanifest og et bootstrap-skript: den angir hvilke moduler remoten eksponerer, viser URL-ene til chunkene og initialiserer shared scope. Hosten laster ned denne filen først for å finne ut hva remoten tilbyr.

Mekanismen for lasting under kjøring

Når hosten møter en import fra en remote-modul, sjekker den om koden til remoten allerede er lastet inn. Hvis ikke henter den remoteEntry.js fra URL-en til remoten, initialiserer shared scope (og forhandler versjoner av delte biblioteker), og laster deretter ned og kjører den spesifikke chunken som inneholder den forespurte modulen.

Uavhengig utrulling i praksis

Et team ruller ut en ny versjon av remoten (med en oppdatert Button-komponent) uten å endre host-applikasjonen. Den neste brukeren som laster inn hosten, får automatisk den nye Button-komponenten fordi hosten alltid henter fra den gjeldende remoteEntry.js-URL-en. Ingen ny bygging eller utrulling av hosten, og ingen koordinering er nødvendig.

Module Federation kontra iframes

Et eldre mikrofrontend-mønster bruker iframes til å isolere seksjoner som eies av ulike team. Iframes gir sterk isolasjon, men gjør delt tilstand, URL-ruting og styling svært vanskelig. Module Federation holder alt i den samme JavaScript-konteksten, slik at delt ruting, delt autentiseringstilstand og konsekvent styling blir mulig.

Remote-manifestet i Module Federation

Hvilken rolle har remoteEntry.js i Module Federation?

Oppsummering av leksjonen

Module Federation løser problemet med uavhengig utrulling av delt frontend-kode ved å muliggjøre lasting av moduler under kjøring. Remotes eksponerer moduler via remoteEntry.js, og hosts bruker dem dynamisk uten å bygge på nytt. Delte singletoner (React, React DOM) hindrer at biblioteker lastes inn flere ganger. Denne arkitekturen muliggjør ekte uavhengig utrulling: Oppdater en remote, så ser alle host-applikasjonene endringen umiddelbart.

Gratis å komme i gang

Lær deg React med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
88
Leksjoner
324

Ofte stilte spørsmål

Er leksjonen «Module Federation: Dynamiske importer ved kjøring» gratis?

Ja – hele teksten i «Module Federation: Dynamiske importer ved kjøring» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Module Federation: Dynamiske importer ved kjøring»?

Forstå hvordan Webpack Module Federation laster inn eksterne moduler ved kjøring uten å pakke dem inn i verten. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med React Academy?

Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Module Federation: Dynamiske importer ved kjøring»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?

Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Module Federation: Dynamiske importer ved kjøring
  2. Konfigurere verts- og eksterne React-apper
  3. Dele tilstand og ruting mellom remoter
  4. Versjonering, utrulling og orkestrering
← Tilbake til React Academy