Mikrofrontendarkitektur med Module Federation · Lektion

Deep linking og URL-håndtering

Lær at håndtere deep linking og bevare ensartede URL'er på tværs af federerede applikationer.

Lektion 3 af 411 trin

Deep linking og URL-håndtering 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.

Dybdelinks i mikrofrontends

Dybdelinks giver brugere mulighed for at navigere direkte til specifikt indhold i en applikation via en URL. I stedet for blot at indlæse startsiden kan et dybdelink føre dem til en produktside med detaljer, en bestemt artikel eller en brugerprofil.

I mikrofrontends er dybdelinks afgørende for en problemfri brugeroplevelse. De sikrer, at brugerne kan bogmærke, dele og vende tilbage til præcise tilstande i det samlede system, selvom applikationen består af mange uafhængige dele.

URL-udfordringer i federerede applikationer

Selvom dybdelinks er effektive, medfører de særlige udfordringer i en federeret arkitektur:

  • Decentraliseret ejerskab: Forskellige teams ejer forskellige MFE'er, hvilket potentielt kan føre til uensartede URL-mønstre.
  • Routingkonflikter: Flere MFE'er kan forsøge at håndtere de samme URL-stier eller administrere browserhistorikken uafhængigt.
  • Tilstandshåndtering: Det kræver omhyggelig planlægning at sende nødvendige data via URL'er mellem værten og eksterne MFE'er eller mellem eksterne MFE'er.

Uden den rette koordinering kan dybdelinks gå i stykker, hvilket fører til frustrerende brugeroplevelser.

Etablering af URL-konventioner

For at håndtere dybdelinks effektivt skal du etablere tydelige URL-konventioner:

  • Unikke præfikser: Tildel hvert MFE et unikt URL-præfiks (f.eks. /products/... til produkt-MFE'en og /cart/... til kurv-MFE'en).
  • Ensartet struktur: Definer en ensartet måde at strukturere parametre, id'er og underordnede stier i hver MFE's segment på.
  • Dokumentation: Dokumentér disse konventioner tydeligt, så alle MFE-teams kan følge dem.

Det sikrer, at værtsapplikationen nemt kan identificere, hvilken MFE der er ansvarlig for et bestemt URL-segment.

Værtsorkestrerede dybdelinks

Værtsapplikationen spiller ofte en central rolle i orkestreringen af dybdelinks. Når en bruger navigerer til en URL, er værtsapplikationens router den første, der opfanger den.

Dens ansvarsområder omfatter:

  • Analyse af den indgående URL for at identificere den målrettede MFE ud fra URL-præfikset.
  • Dynamisk indlæsning af den korrekte eksterne MFE.
  • Videresendelse af den relevante del af URL'en (MFE'ens underordnede sti og parametre) til den indlæste MFE, så den kan håndtere intern routing.

Denne tilgang centraliserer den indledende routingbeslutning og gør det lettere at håndtere navigationens overordnede forløb i applikationen.

Intern routing i en ekstern MFE

Når værtsapplikationen har indlæst en bestemt ekstern MFE, overtager denne MFE routingen for det URL-segment, der er tildelt den.

Den eksterne MFE's interne router (f.eks. React Router eller Angular Router) behandler den underordnede sti, som den modtager fra værten. Derefter gengiver den den relevante komponent eller visning inden for sin egen afgrænsning.

Det giver hvert team mulighed for at bevare uafhængig kontrol over routinglogikken for sin MFE's interne navigation, samtidig med at den integreres i den større federerede applikation.

Overførsel af data via URL-parametre

Dybdelinks skal ofte indeholde specifikke data, f.eks. et vare-id eller en filterindstilling. Det gøres typisk ved hjælp af URL-parametre:

  • Stiparametre: En del af selve URL-stien (f.eks. /products/item/123).
  • Forespørgselsparametre: Tilføjes efter et ? (f.eks. /products/search?category=electronics&page=2).

Værten kan udtrække disse parametre og sende dem til den eksterne MFE, eller den eksterne MFE kan læse dem direkte fra browserens URL, når den er indlæst og aktiv.

Synkronisering af browserhistorik

Når flere MFE'er er aktive, er det afgørende at have én samlet browserhistorik. Hvis hver MFE manipulerer browserhistorikken uafhængigt, kan der opstå konflikter og uventet adfærd for tilbage- og frem-knapperne.

Strategier til synkronisering:

  • Værten styrer historikken: Værtsapplikationen er den eneste ejer af browserhistorikken, og eksterne MFE'er anmoder værten om ændringer i historikken.
  • Delt historikbibliotek: Brug et delt routingbibliotek eller en delt kontekst, som alle MFE'er abonnerer på for at modtage opdateringer af historikken.

Det sikrer en ensartet navigationsoplevelse for brugeren.

Eksempel: Værten uddelegerer en URL

Her er et forenklet JavaScript-eksempel, der viser, hvordan en værtsapplikation kan analysere et dybdelink og uddelegere det til en bestemt MFE ud fra URL-stien:

function delegateRoute(fullPath) {
  console.log(`Host processing: ${fullPath}`);
  if (fullPath.startsWith('/products')) {
    const remotePath = fullPath.substring('/products'.length);
    console.log(`  Loading Products MFE with path: ${remotePath || '/'}`);
    // In a real app: Dynamically load Products MFE
    // and pass remotePath for its internal routing.
  } else if (fullPath.startsWith('/cart')) {
    const remotePath = fullPath.substring('/cart'.length);
    console.log(`  Loading Cart MFE with path: ${remotePath || '/'}`);
    // In a real app: Dynamically load Cart MFE
  } else {
    console.log('  Loading Home MFE');
  }
}

delegateRoute('/products/item/456?color=red');
delegateRoute('/cart/checkout');
delegateRoute('/about');

Eksempel: Ekstern MFE bruger URL-data

Når en ekstern MFE er indlæst, skal den udtrække og bruge de relevante sti- og forespørgselsparametre fra URL'en. Dette eksempel viser, hvordan en 'Products'-MFE kan behandle sin interne sti:

// Simulate the Products MFE receiving its path segment
function processProductDeepLink(remotePath) {
  console.log(`Products MFE processing internal path: ${remotePath}`);
  if (remotePath.startsWith('/item/')) {
    const itemId = remotePath.split('/')[2];
    // In a real app, use window.location.search
    // Mocking window.location.search for runnable example
    const currentUrlSearchParams = new URLSearchParams(
      typeof window !== 'undefined' && window.location && window.location.search
        ? window.location.search
        : '?source=deeplink'
    );
    const source = currentUrlSearchParams.get('source');
    console.log(`  Displaying Product ID: ${itemId}, Source: ${source}`);
  } else if (remotePath === '/category/electronics') {
    console.log('  Showing Electronics Category Page');
  } else {
    console.log('  Showing Products Dashboard');
  }
}

// Simulate calls from the host with different remote paths
processProductDeepLink('/item/123');
processProductDeepLink('/category/electronics');
processProductDeepLink('/');

Test af dybdelinks og URL-håndtering

Test din forståelse af håndtering af dybdelinks og URL'er i mikrofrontends.

Opsummering af dybdelinks og URL'er

I denne lektion undersøgte vi, hvordan man håndterer dybdelinks og bevarer ensartede URL'er i federerede applikationer:

  • Dybdelinks er afgørende for brugeroplevelsen i MFE'er.
  • Udfordringerne omfatter decentraliseret ejerskab og routingkonflikter.
  • Ensartede URL-konventioner og værtsorkestreret routing er afgørende.
  • Eksterne MFE'er håndterer intern routing for deres specifikke URL-segmenter.
  • URL-parametre bruges til at overføre data, og browserhistorikken bør synkroniseres for at skabe en problemfri oplevelse.

Hvis du mestrer disse teknikker, får du en sammenhængende og navigerbar brugergrænseflade på tværs af din distribuerede applikation.

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 “Deep linking og URL-håndtering” gratis?

Ja — hele teksten til “Deep linking og URL-håndtering” 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 “Deep linking og URL-håndtering”?

Lær at håndtere deep linking og bevare ensartede URL'er på tværs af federerede applikationer. 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 “Deep linking og URL-håndtering”?

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. Centraliseret routingstrategi
  2. Implementering af federeret routing
  3. Deep linking og URL-håndtering
  4. Håndtering af indlejret navigation og navigation på tværs af apps
← Tilbage til Mikrofrontendarkitektur med Module Federation