React Academy · Lektion

Module Federation: dynamiska importer vid körning

Förstå hur Webpack Module Federation laddar fjärrmoduler vid körning utan att paketera dem i värden.

Lektion 1 av 413 steg

Module Federation: dynamiska importer vid körning är en gratis lektion i React Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.

Problemet som Module Federation löser

I en frontendorganisation med flera team behöver flera oberoende driftsatta applikationer ofta dela UI-komponenter och verktyg. Publicering till npm kräver en versionshöjning, en ny release och fullständig omdriftsättning av alla applikationer som använder paketet. Det skapar en stark koppling mellan teamen och långsamma utvecklingscykler.

npm-metoden och dess nackdelar

Den traditionella metoden, där delad kod publiceras som ett npm-paket, innebär att en uppdatering av en delad knappkomponent kräver följande: uppdatera npm-paketet, publicera en ny version, uppdatera package.json i alla applikationer som använder paketet, bygga om och driftsätta alla dessa applikationer. Module Federation eliminerar alla dessa steg.

Vad Module Federation gör

Module Federation låter en applikation, en "remote", exponera JavaScript-moduler som en annan applikation, en "host", laddar och kör vid runtime utan att hosten behöver byggas om eller driftsättas på nytt. När användaren laddar host-applikationen hämtas remotes moduler dynamiskt vid behov.

Inbyggt stöd i Webpack 5

Webpack 5 introducerade Module Federation som en inbyggd förstaklassfunktion via ModuleFederationPlugin. Före Webpack 5 krävde liknande mönster komplex manuell konfiguration eller plugin-program från tredje part. Plugin-programmet hanterar all dynamisk laddning och hantering av shared scope automatiskt.

Viktiga begrepp: remotes

En remote är en oberoende driftsatt applikation som exponerar en eller flera moduler – React-komponenter, verktyg eller hela funktionssidor – som andra applikationer kan använda. Remoten bygger ett remoteEntry.js-manifest som beskriver vad den exponerar och hur det ska laddas.

Viktiga begrepp: hosts

En host är en applikation som använder moduler från en eller flera remotes. Hosten refererar till remotes med namn och URL i sin Webpack-konfiguration. När hostens kod importerar en remote-modul hämtar och kör Webpacks Module Federation-runtime den dynamiskt från remotens URL.

Viktiga begrepp: delade moduler

Delade moduler är bibliotek, som React och React DOM, som bara ska laddas en gång även om både hosten och remoten inkluderar dem. Genom att markera React som en delad singleton säkerställer Module Federation att bara en React-version körs – vilket är avgörande eftersom Reacts hooks inte fungerar med flera instanser.

Manifestet remoteEntry.js

När en remote byggs genererar Webpack en fil med det konfigurerade filnamnet remoteEntry.js. Filen är ett lättviktigt manifest och bootstrap-skript: den deklarerar vilka moduler remoten exponerar, listar deras chunk-URL:er och initierar shared scope. Hosten laddar ner filen först för att upptäcka vad remoten erbjuder.

Så fungerar laddning vid runtime

När hosten stöter på en import från en remote-modul kontrollerar den om remotens kod redan har laddats. Om den inte har det hämtar hosten remoteEntry.js från remotens URL, initierar shared scope genom att förhandla om versioner av delade bibliotek och laddar sedan ner och kör den specifika chunk som innehåller den begärda modulen.

Oberoende driftsättning i praktiken

Ett team driftsätter en ny version av sin remote, med en uppdaterad Button-komponent, utan att ändra host-applikationen. Nästa användare som laddar hosten får automatiskt den nya Button-komponenten eftersom hosten alltid hämtar från den aktuella URL:en till remoteEntry.js. Ingen ombyggnad eller omdriftsättning av hosten krävs, och ingen samordning behövs.

Module Federation jämfört med iframes

Ett äldre mikrofrontendmönster använder iframes för att isolera sektioner som ägs av olika team. Iframes ger stark isolering men gör delat tillstånd, URL-routing och styling extremt svårt. Module Federation behåller allt i samma JavaScript-kontext, vilket möjliggör delad routing, delat autentiseringstillstånd och enhetlig styling.

Module Federation: remote-manifestet

Vilken roll har remoteEntry.js i Module Federation?

Lektionssammanfattning

Module Federation löser problemet med oberoende driftsättning av delad frontendkod genom att möjliggöra laddning av moduler vid runtime. Remotes exponerar moduler via remoteEntry.js och hosts använder dem dynamiskt utan att byggas om. Delade singleton-moduler, som React och React DOM, förhindrar att bibliotek laddas flera gånger. Arkitekturen möjliggör verkligt oberoende driftsättning: uppdatera en remote så ser alla host-applikationer ändringen omedelbart.

Gratis att börja

Lär dig React med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
88
Lektioner
324

Vanliga frågor

Är lektionen ”Module Federation: dynamiska importer vid körning” gratis?

Ja – hela texten till ”Module Federation: dynamiska importer vid körning” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Module Federation: dynamiska importer vid körning”?

Förstå hur Webpack Module Federation laddar fjärrmoduler vid körning utan att paketera dem i värden. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig React Academy?

Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Module Federation: dynamiska importer vid körning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här React Academy-lektionen?

Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Module Federation: dynamiska importer vid körning
  2. Konfigurera värd- och fjärrappar i React
  3. Dela tillstånd och routning mellan remotes
  4. Versionshantering, driftsättning och orkestrering
← Tillbaka till React Academy