Grundlæggende om Module Federation
Forstå, hvordan Module Federation muliggør deling mellem mikrofrontends
Grundlæggende om Module Federation er en gratis HTML Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i HTML Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. HTML Academy-kurset indeholder 4 lektioner i alt.
Hvad er Module Federation?
Module Federation lader en JavaScript-applikation indlæse og køre kode fra en anden, uafhængigt udrullet applikation under kørsel. Mønsteret stammer fra Webpack 5, men kan nu også implementeres med indbyggede importkort og dynamisk import.
Anvendelsen
Store organisationer opdeler monolitter i flere "mikrofrontends", der udrulles uafhængigt – en skalvært plus flere funktionsapplikationer. Modulfederation lader skallen indlæse hver funktion efter behov uden at samle dem ved byggetid.
Webpack Federation
I Webpack 5 erklærer værten remotes (andre apps, den skal bruge), og fjernapplikationer erklærer exposes (det, de stiller til rådighed). Kørselssystemet henter et lille manifest fra hver fjernapplikation ved opstart og downloader kodeblokke, efterhånden som værten importerer dem.
Indbyggede alternativer
Uden Webpack fungerer den samme idé med importkort, der peger på eksterne ESM-kodeblokke, og dynamisk import til indlæsningen. Værtens importkort siger "feature-cart": "https://cart-team.example.com/entry.js"; import("feature-cart") indlæser den senest udrullede version.
<script type="importmap">
{
"imports": {
"feature-cart": "https://cart.example.com/v1/entry.js",
"feature-checkout": "https://checkout.example.com/v2/entry.js"
}
}
</script>Delte afhængigheder
Uden koordinering ville hver fjernapplikation sende sin egen kopi af React. Modulfederationsværktøjer gør det muligt at erklære delte afhængigheder – den første fjernapplikation, der indlæser React, gør det tilgængeligt for alle andre. Indbyggede løsninger bruger importkort til at pege alle fjernapplikationer på den samme React-URL.
Uafhængig udrulning
Hvert team ejer sin fjernapplikation og udruller, når det passer dem. Værten bygger aldrig igen; den henter nye versioner ved næste sideindlæsning (eller via cache-ugyldiggørelse). Det afkobler udgivelsescyklusserne fuldstændigt.
Versionsstrategier
Fastlås fjernapplikationer til versionsbestemte URL'er (/v1/entry.js, /v2/entry.js), så en opgradering af værten sker bevidst i stedet for implicit. Nogle teams bruger overensstemmelse med semver på importkortniveau via værktøjer som JSPM.
Afvejninger
Modulfederation tilføjer kompleksitet under kørsel: flere netværksanmodninger, vanskeligere fejlfinding på tværs af oprindelser og risikoen for inkompatible delte afhængigheder. Brug det, når du reelt har brug for uafhængig udrulning; i mindre projekter er én samlet bygning enklere og hurtigere.
Isolering af fejl
Hvis ét fjernmodul går ned, bør det ikke få værtsapplikationen til at gå ned. Indpak dynamiske imports i fejlafgrænsninger (React) eller try/catch (vanilla), og vis en alternativ brugergrænseflade, når et fjernmodul fejler. Skallen forbliver funktionel, selv hvis en funktion midlertidigt er ødelagt.
Typesikkerhed
Eksporter fra fjernmoduler har ingen typeinformation ved kompilering i værtsapplikationen. Generér delte TypeScript-typer i en separat pakke, som begge sider bruger, eller brug validering under kørsel (Zod, io-ts) ved føderationsgrænsen.
Indbygget kontra værktøjer
Indbygget føderation (import maps + ESM) er enklere og standardbaseret, men mangler Webpacks koordinering af delte afhængigheder. Vælg Webpack/Module Federation til komplekse applikationer med mange delte afhængigheder, og vælg indbygget føderation til enklere mikrofrontendopsætninger.
Fremtidig retning
W3C undersøger mere avancerede primitiver til modulindlæsning, som vil gøre indbygget føderation mere funktionsrig — herunder bedre forhandling af delte afhængigheder. I dag bør du betragte import maps som grundlaget og lægge dine føderationsværktøjer ovenpå.
Videnstjek
Hvad er den primære grund til at bruge Module Federation i en stor applikation?
Opsummering
Module Federation gør det muligt for en værtsapplikation at indlæse kode fra selvstændigt udrullede fjernmoduler under kørsel. Værktøjerne i Webpack 5 tilføjer forhandling af delte afhængigheder, mens indbygget føderation bruger import maps og dynamisk import. Brug det til mikrofrontendarkitekturer med flere teams, og accepter den ekstra kompleksitet til gengæld for friheden til uafhængig udrulning.
Lær HTML 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
- 40
- Lektioner
- 159
Ofte stillede spørgsmål
Er lektionen “Grundlæggende om Module Federation” gratis?
Ja — alle 3 lektioner i læringssporet HTML Academy, inklusive “Grundlæggende om Module Federation”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. HTML Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Grundlæggende om Module Federation”?
Forstå, hvordan Module Federation muliggør deling mellem mikrofrontends Du øver dig i HTML 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å HTML Academy?
Der kræves ingen tidligere erfaring. HTML 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 4 af 4.
Hvor lang tid tager lektionen “Grundlæggende om Module Federation”?
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 HTML Academy-lektion?
Ja. Alle HTML 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
- ES-modulscripts: type=module
- Import maps: importmap
- Dynamisk import() i moduler
- Grundlæggende om Module Federation