React Academy · Lektion

Islands-arkitektur: Selektiv hydration

Lær, hvordan islands isolerer interaktive komponenter, så kun de leveres med JavaScript, mens resten forbliver statisk HTML.

Lektion 2 af 413 trin

Islands-arkitektur: Selektiv hydration er en gratis React Academy-lektion på CoddyKit. Dette er lektion 2 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.

Islands-konceptet

Islands-arkitektur, som Jason Miller navngav i 2020, betragter en webside som for det meste statisk HTML med isolerede interaktive øer indlejret i den. Det statiske HTML-hav sendes til browseren, som det er. Kun de interaktive øer henter og udfører JavaScript, så mængden af JavaScript står i forhold til den faktiske interaktivitet.

Sådan fungerer Islands-arkitektur

Hver ø er en komponent, der hydreres uafhængigt. Serveren gengiver øens oprindelige HTML sammen med resten af siden. Når øens JavaScript indlæses, hydreres kun dette komponentundertræ. HTML'en omkring øerne berøres aldrig af JavaScript — den er virkelig statisk.

Forskellen i JavaScript-mængde

På en blogindlægsside med Islands-arkitektur kan JavaScript-mængden være 5kb til en enkelt ø med en knap til at synes godt om. Den samme side bygget som en React-SPA sender måske mere end 200kb JavaScript for at hydrere hele siden. Islands-tilgangen gør mængden proportional med interaktiviteten, ikke sidens størrelse.

Øer på tværs af rammeværker

Astro, det førende rammeværk til Islands-arkitektur, understøtter øer bygget med forskellige rammeværker på den samme side. Du kan have en React-ø ved siden af en Vue-ø og en ø med ren JavaScript. Hver ø pakkes separat, så brugerne kun henter koden til de rammeværker, der bruges af de synlige øer.

client:load — øjeblikkelig hydrering

Direktivet client:load hydreres øjeblikkeligt, når siden indlæses. Brug det til øer, der er synlige og interaktive med det samme, f.eks. en navigationsmenu eller en fremhævet sektion med et søgefelt. Dette er hydreringsstrategien med den højeste prioritet.

client:idle — udskudt hydrering

Direktivet client:idle venter, indtil browserens hovedtråd er ledig, efter at det kritiske indhold er indlæst, før øen hydreres. Det er ideelt til elementer under det synlige område eller sekundære interaktioner, der ikke er nødvendige med det samme, f.eks. en bjælke til social deling.

client:visible — doven hydrering

Direktivet client:visible bruger en Intersection Observer til kun at hydrere øen, når den rulles ind i visningsområdet. Det er ideelt til øer langt nede på siden — f.eks. en kommentarsektion eller en karrusel med relaterede produkter — som de fleste brugere måske aldrig når frem til. JavaScript indlæses ikke engang, før det er nødvendigt.

client:only — spring SSR over

Direktivet client:only springer serversiderendering helt over og gengiver kun øen i browseren. Det er nødvendigt for komponenter, der bruger API'er, som kun findes i browseren (window, document), eller som afhænger af klientsidetilstand på monteringstidspunktet. Afvejningen er, at øen ikke har nogen serversiderenderede HTML.

Løsning på hydreringsproblemet

Islands-arkitektur løser problemet med fuld hydrering ved at sikre, at JavaScript kun indlæses og udføres for reelt interaktive komponenter. Et blogindlæg med en knap til at synes godt om hydrerer kun øen med denne knap — teksten i artiklen på 1.200 ord, sidehovedet og sidefoden medfører ingen JavaScript-udførelse på klienten.

Tilstandsisolering mellem øer

Hver ø har sin egen isolerede tilstand. Øer kan ikke dele React-tilstand direkte, fordi de er separate React-træer. Det er tilsigtet: Hvis to komponenter har brug for at dele tilstand, bør de samles i én ø. Kommunikation på tværs af øer bruger URL-parametre, DOM-hændelser eller lette tilstandsbiblioteker.

Resultater i den virkelige verden

Websteder, der er flyttet fra React-SPA til Islands-arkitektur, f.eks. Astro-dokumentationswebstedet, rapporterer markante forbedringer: JavaScript-mængden falder med 70-90 %, TTI forbedres med 2-4 sekunder på mobilen, og Lighthouse-resultaterne for ydeevne stiger fra 60'erne til 90'erne eller derover. Gevinsterne er størst på sider med meget indhold.

Strategier til hydrering af øer

Hvilket Astro-hydreringsdirektiv hydrerer en komponent, men først når den ruller ind i visningsområdet?

Opsummering af lektionen

Ø-arkitekturen holder det meste af siden som statisk HTML og hydrerer kun isolerede interaktive komponenter. Astro har hydreringsdirektiverne client:load (med det samme), client:idle (efter inaktivitet), client:visible (ved rulning) og client:only (gengivelse kun på klienten). Hver ø hydreres uafhængigt, så mængden af JavaScript står i forhold til interaktiviteten i stedet for sidens størrelse.

Gratis at komme i gang

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 “Islands-arkitektur: Selektiv hydration” gratis?

Ja — hele teksten til “Islands-arkitektur: Selektiv hydration” 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 “Islands-arkitektur: Selektiv hydration”?

Lær, hvordan islands isolerer interaktive komponenter, så kun de leveres med JavaScript, mens resten forbliver statisk HTML. 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 2 af 4.

Hvor lang tid tager lektionen “Islands-arkitektur: Selektiv hydration”?

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

  1. Problemet med fuld hydration
  2. Islands-arkitektur: Selektiv hydration
  3. Opsætning af Astro og React Islands
  4. Måling af ydeevne: Lighthouse og Core Web Vitals
← Tilbage til React Academy