Mikrofrontendarkitektur med Module Federation · Lektion

Dynamisk modulindlæsning

Implementér dynamisk indlæsning af remote-moduler for at forbedre den indledende indlæsningstid og optimere ressourceforbruget.

Lektion 3 af 412 trin

Dynamisk modulindlæsning er en gratis Mikrofrontendarkitektur med Module Federation-lektion på CoddyKit. Dette er lektion 3 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 Mikrofrontendarkitektur med Module Federation, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Mikrofrontendarkitektur med Module Federation-kurset indeholder 4 lektioner i alt.

Hvad er dynamisk indlæsning?

Når du bygger store webapplikationer, især med mikrofrontends, kan det gøre din applikation langsom at starte, hvis alt indlæses på én gang. Det er her, dynamisk modulindlæsning kommer ind i billedet!

Det er en teknik, der gør det muligt kun at indlæse dele af applikationen, når der faktisk er brug for dem, i stedet for på forhånd.

Hvorfor dynamisk indlæsning til MFE'er?

I en mikrofrontend-arkitektur ejer forskellige teams forskellige dele af brugerfladen. Ofte bruger en person kun én eller to mikrofrontends ad gangen.

  • Bedre ydeevne: Hent kun koden til de mikrofrontends, der aktuelt er synlige.
  • Hurtigere indledende indlæsning: Reducér størrelsen på den indledende bundle, så applikationen føles hurtigere.
  • Optimeret ressourceforbrug: Spar båndbredde og hukommelse ved ikke at indlæse ubrugte moduler.

Den dynamiske `import()`-funktion

Kernen i dynamisk indlæsning i JavaScript er funktionen import(). Det er en særlig syntaks, der gør det muligt at importere moduler asynkront.

Når du bruger import(), opretter Webpack (og andre bundlere) automatisk en separat 'chunk' til modulet. Denne chunk indlæses først, når kaldet til import() udføres.

Sådan fungerer `import()`

Funktionen import() returnerer et Promise. Det betyder, at du kan bruge .then() og .catch() til at håndtere det indlæste modul eller eventuelle fejl.

Du kan også bruge async/await for en mere overskuelig syntaks, når du arbejder med asynkrone handlinger.

Webpacks rolle ved dynamiske importer

Webpack er intelligent! Når det ser et kald til import(), ved det, at det importerede modul skal behandles som et opdelingspunkt.

Det betyder, at der oprettes en separat JavaScript-fil (en 'chunk') til modulet og dets afhængigheder. Denne chunk hentes fra serveren, først når kaldet til import() udløses under kørsel.

Dynamisk indlæsning af fjernmoduler

I Module Federation omfatter dynamisk indlæsning også fjernmoduler. I stedet for at angive, at alle fjernmoduler skal indlæses ved opstart, kan du konfigurere dem til kun at blive indlæst, når der udtrykkeligt anmodes om dem via import().

Det er særdeles effektivt til store fødererede applikationer, fordi du kan bygge ægte on-demand-mikrofrontends.

Værtsapplikation: Eksempel på dynamisk indlæsning

Prøv at køre dette enkle eksempel. Bemærk, hvordan meddelelsen 'feature' vises efter en kort forsinkelse, der simulerer en asynkron indlæsning. I en rigtig MFE ville dette hente en fjernkomponent.

console.log("App starts.");

async function loadFeature() {
  console.log("Loading feature dynamically...");
  try {
    // In a real MFE, this would be: 
    // const { renderFeature } = await import('remoteApp/Feature');
    
    // Simulating a module that resolves immediately
    const simulatedModule = {
      default: () => console.log("Feature 'A' loaded and activated!")
    };
    
    // Simulate the async delay of a real network request
    await new Promise(resolve => setTimeout(resolve, 1000));
    
    simulatedModule.default();
    console.log("Feature loading complete.");

  } catch (error) {
    console.error("Failed to load feature:", error);
  }
}

// Trigger dynamic loading after initial app setup
setTimeout(loadFeature, 500);
console.log("Initial app setup done.");

Håndtering af indlæsningstilstande

Da dynamisk indlæsning foregår asynkront, er der et kort tidsrum, mens modulet hentes over netværket.

Det er afgørende at give en god brugeroplevelse ved at vise en indlæsningsindikator (f.eks. en spinner eller en skeletskærm) i dette tidsrum. Det forhindrer brugerfladen i at virke ufølsom.

Fejlhåndtering ved dynamiske importer

Hvad sker der, hvis et dynamisk indlæst modul ikke kan indlæses? Måske på grund af en netværksfejl, en ugyldig sti eller fordi fjernserveren er nede?

Indpak altid dine dynamiske kald til import() i en try...catch-blok, eller brug .catch()-metoden på Promise-objektet til at håndtere disse fejl på en god måde. Du kan vise en fejlmeddelelse eller en reservebrugerflade.

Vigtige fordele for ydeevnen

For at opsummere forbedrer dynamisk modulindlæsning din applikations ydeevne markant:

  • Mindre indledende bundle: Kun den nødvendige kode indlæses på forhånd.
  • Hurtigere interaktionstid (TTI): Brugere kan interagere med de vigtigste dele af applikationen tidligere.
  • Bedre ressourceudnyttelse: Mindre netværkstrafik og lavere hukommelsesforbrug for funktioner, der ikke bruges i øjeblikket.
  • Bedre brugeroplevelse: En hurtigere og mere responsiv applikation.

Tjek af dynamisk indlæsning

Hvilke af følgende er de primære fordele ved at implementere dynamisk modulindlæsning i en mikrofrontend-applikation?

Opsamling: Dynamisk indlæsning

Godt klaret! I denne lektion udforskede vi dynamisk modulindlæsning som en vigtig teknik til optimering af mikrofrontends. Vi lærte om funktionen import(), hvordan Webpack håndterer den, og hvilke fordele den giver for ydeevne og brugeroplevelse.

Ved kun at indlæse moduler, når der er brug for dem, kan du bygge mere effektive og responsive fødererede applikationer. Husk at håndtere indlæsningstilstande og potentielle fejl for at sikre en robust brugeroplevelse!

Gratis at komme i gang

Lær JavaScript 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
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Dynamisk modulindlæsning” gratis?

Ja — hele teksten til “Dynamisk modulindlæsning” 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 Mikrofrontendarkitektur med Module Federation-kurset, skal du opgradere til CoddyKit PRO. Mikrofrontendarkitektur med Module Federation-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Dynamisk modulindlæsning”?

Implementér dynamisk indlæsning af remote-moduler for at forbedre den indledende indlæsningstid og optimere ressourceforbruget. Du øver dig i Mikrofrontendarkitektur med Module Federation 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å Mikrofrontendarkitektur med Module Federation?

Der kræves ingen tidligere erfaring. Mikrofrontendarkitektur med Module Federation 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 3 af 4.

Hvor lang tid tager lektionen “Dynamisk modulindlæsning”?

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 Mikrofrontendarkitektur med Module Federation-lektion?

Ja. Alle Mikrofrontendarkitektur med Module Federation-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

  1. Anvendelse af delte afhængigheder
  2. Singleton-moduler og versionering
  3. Dynamisk modulindlæsning
  4. Deling af tilstand og hjælpeværktøjer på tværs af remotes
← Tilbage til Mikrofrontendarkitektur med Module Federation