Module Federation: Dynamiske runtime-imports
Forstå, hvordan Webpack Module Federation indlæser remote-moduler under kørsel uden at bundle dem i hosten.
Module Federation: Dynamiske runtime-imports er en gratis React Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i React Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. React Academy-kurset indeholder 4 lektioner i alt.
Problemet, som Module Federation løser
I en frontendorganisation med flere teams har flere uafhængigt udrullede applikationer ofte brug for at dele UI-komponenter og hjælpefunktioner. Udgivelse til npm kræver en versionsforøgelse, en ny udgivelse og fuld genudrulning af alle applikationer, der bruger pakken — hvilket skaber tæt kobling mellem teams og langsomme iterationscyklusser.
npm-tilgangen og dens ulemper
Den traditionelle tilgang (at udgive delt kode som en npm-pakke) betyder, at opdatering af en delt knapkomponent kræver: opdater npm-pakken, udgiv en ny version, opdater alle applikationers package.json, der bruger pakken, genbyg og genudrul alle disse applikationer. Module Federation eliminerer alle disse trin.
Hvad Module Federation gør
Module Federation gør det muligt for én applikation (en "remote") at eksponere JavaScript-moduler, som en anden applikation (en "host") indlæser og kører under kørsel, uden at hosten skal genbygges eller genudrulles. Når brugeren indlæser host-applikationen, henter den dynamisk remote'ets moduler efter behov.
Indbygget understøttelse i Webpack 5
Webpack 5 introducerede Module Federation som en indbygget kernefunktion via ModuleFederationPlugin. Før Webpack 5 krævede lignende mønstre kompleks manuel konfiguration eller tredjeparts-plugins. Plugin'et håndterer automatisk al dynamisk indlæsning og administration af det delte område.
Vigtige begreber: remotes
Et remote er en uafhængigt udrullet applikation, der eksponerer et eller flere moduler — React-komponenter, hjælpefunktioner eller komplette funktionssider — som andre applikationer kan bruge. Remotet bygger et remoteEntry.js-manifest, der beskriver, hvad det eksponerer, og hvordan det indlæses.
Vigtige begreber: hosts
En host er en applikation, der bruger moduler fra et eller flere remotes. Hosten refererer til remotes via navn og URL i sin Webpack-konfiguration. Når hostens kode importerer et remote-modul, henter og kører Webpacks Module Federation-runtime det dynamisk fra remote'ets URL.
Vigtige begreber: delte moduler
Delte moduler er biblioteker (som React og React DOM), der kun skal indlæses én gang, selv om både hosten og remotet indeholder dem. Ved at markere React som en delt singleton sikrer Module Federation, at der kun kører én React-version — hvilket er afgørende, fordi Reacts hooks ikke fungerer med flere instanser.
Manifestet remoteEntry.js
Når du bygger et remote, genererer Webpack en fil med navnet remoteEntry.js på den konfigurerede placering. Filen er et letvægtsmanifest og et opstartsscript: den erklærer, hvilke moduler remotet eksponerer, angiver deres chunk-URL'er og initialiserer det delte område. Hosten downloader først denne fil for at finde ud af, hvad remotet tilbyder.
Mekanikken bag indlæsning under kørsel
Når hosten støder på en import fra et remote-modul, undersøger den, om remote'ets kode allerede er indlæst. Hvis ikke henter den remoteEntry.js fra remote'ets URL, initialiserer det delte område (og forhandler versioner af delte biblioteker) og downloader og kører derefter den specifikke chunk, der indeholder det ønskede modul.
Uafhængig udrulning i praksis
Et team udruller en ny version af sit remote (med en opdateret Button-komponent) uden at røre host-applikationen. Den næste bruger, der indlæser hosten, får automatisk den nye Button, fordi hosten altid henter fra den aktuelle remoteEntry.js-URL. Ingen genbygning af hosten, ingen genudrulning af hosten og ingen koordinering er nødvendig.
Module Federation kontra iframes
Et ældre microfrontend-mønster bruger iframes til at isolere sektioner, som ejes af forskellige teams. Iframes giver stærk isolation, men gør delt tilstand, URL-routing og styling ekstremt vanskeligt. Module Federation holder alt i den samme JavaScript-kontekst, så delt routing, delt godkendelsestilstand og ensartet styling bliver muligt.
Module Federation: remote-manifestet
Hvilken rolle spiller remoteEntry.js i Module Federation?
Opsummering af lektionen
Module Federation løser problemet med uafhængig udrulning af delt frontend-kode ved at muliggøre indlæsning af moduler under kørsel. Remotes eksponerer moduler via remoteEntry.js, og hosts bruger dem dynamisk uden genbygning. Delte singletons (React og React DOM) forhindrer, at biblioteker indlæses flere gange. Denne arkitektur muliggør ægte uafhængig udrulning: Opdater et remote, så ser alle host-applikationer straks ændringen.
Lær React med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 88
- Lektioner
- 324
Ofte stillede spørgsmål
Er lektionen “Module Federation: Dynamiske runtime-imports” gratis?
Ja — hele teksten til “Module Federation: Dynamiske runtime-imports” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af React Academy-kurset, skal du opgradere til CoddyKit PRO. React Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Module Federation: Dynamiske runtime-imports”?
Forstå, hvordan Webpack Module Federation indlæser remote-moduler under kørsel uden at bundle dem i hosten. Du øver dig i React Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på React Academy?
Der kræves ingen tidligere erfaring. React Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Module Federation: Dynamiske runtime-imports”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne React Academy-lektion?
Ja. Alle React Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Module Federation: Dynamiske runtime-imports
- Konfiguration af host- og remote-React-apps
- Deling af state og routing mellem remotes
- Versionsstyring, deployment og orkestrering