React Academy · Lektion

Problemet med fuld hydration

Mål omkostningen ved at hydrere en hel React-SPA, og forstå, hvorfor statiske sider ikke har brug for det.

Lektion 1 af 413 trin

Problemet med fuld hydration er en gratis React Academy-lektion på CoddyKit. Dette er lektion 1 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.

Hvad er hydrering

Hydrering er den proces, hvor React tager serversiderenderet HTML og tilknytter JavaScript-hændelseslyttere til den. Serveren sender den oprindelige HTML hurtigt, hvorefter browseren henter JavaScript-bundtet, og React hydreres for at gøre den statiske HTML interaktiv. Indtil hydreringen er færdig, ser siden interaktiv ud, men den er det ikke.

Omkostningen ved hydrering i traditionelle SPA'er

En traditionel enkeltsidesapplikation sender hele JavaScript-bundtet til browseren. React skal hente, fortolke og udføre det og derefter tilknytte hændelseslyttere til hver komponent i træet. I store applikationer kan denne proces tage flere sekunder på mobilenheder i mellemklassen.

Tid til interaktivitet (TTI)

Tid til interaktivitet måler, hvor lang tid der går, før brugeren kan interagere med siden. Hydrering blokerer direkte for TTI: Siden kan se klar ud, fordi den serversiderenderede HTML er synlig, men knapper og formularer reagerer ikke, før React er færdig med at tilknytte hændelseslyttere. En høj TTI-værdi giver en dårlig brugeroplevelse.

Paradokset ved statisk indhold

Overvej en marketingsside: 80 % af indholdet er statisk tekst, billeder og overskrifter, som aldrig ændres. Kun 20 % omfatter interaktive elementer som en nyhedsbrevsformular eller en videoafspiller. Traditionel SPA-hydrering kører stadig for 100 % af siden og behandler dermed statiske komponenter unødvendigt.

Måling af hydreringsomkostningen

Ydeevneprofilering i Chrome DevTools afslører hydreringsomkostningen. I vandfaldsvisningen for hovedtråden kan du identificere opgaven React-hydrering som en lang blok med JavaScript-udførelse efter den første rendering. Jo længere denne blok er, desto mere er hovedtråden optaget, og desto mindre responsiv er siden.

Størrelsen på komponenttræet betyder noget

Jo større React-komponenttræet er, desto mere arbejde kræver hydreringen. React skal besøge hver komponent, sammenligne den serversiderenderede HTML med det, komponenten ville gengive, og tilknytte hændelseslyttere. En kompleks side med hundredvis af komponenter kan have mærkbare hydreringsomkostninger, selv på hurtige enheder.

Samtidig hydrering i React 18

React 18 introducerede samtidig hydrering, som gør det muligt for React at opdele hydreringen i mindre dele og give browseren kontrol mellem dem. Det forhindrer browseren i at virke helt fastlåst under hydrering af store træer. Samtidig hydrering reducerer dog kun effekten — den fjerner ikke den grundlæggende omkostning.

Selektiv hydrering i React 18

Selektiv hydrering via Suspense gør det muligt for React at hydrere komponenter i prioritetsrækkefølge — brugerinteraktioner udløser øjeblikkelig hydrering af den relevante komponent. Det forbedrer reaktionsevnen, men foregår stadig i ét React-træ: Alle komponenter i træet bliver til sidst hydreret.

Den centrale erkendelse

Den grundlæggende erkendelse bag Islands-arkitektur er, at det meste af en typisk side slet ikke har brug for JavaScript. Navigationsbjælker, fremhævede sektioner, links i sidefoden, tekst i blogindlæg og produktbeskrivelser er udelukkende præsentationsindhold. At tvinge hydrering igennem på dem er per definition spild.

Konsekvenser i den virkelige verden

Undersøgelser fra teams, der arbejder med webydeevne, viser, at tiden til fortolkning og udførelse af JavaScript er den dominerende omkostning på mobilenheder. Et JavaScript-bundt på 300kb tager 2-3 sekunder at fortolke på en typisk Android-telefon. At reducere den mængde JavaScript, der sendes til browseren, giver uforholdsmæssigt store ydelsesfordele sammenlignet med enhver optimering internt i React.

Hydreringsomkostningen

Hver kilobyte JavaScript, du føjer til en React-applikation, medfører mere hydreringsarbejde. Selv hvis en komponent udelukkende er dekorativ, deltager den i hydreringen, hvis den er med i React-træet. Denne hydreringsomkostning vokser med applikationens størrelse og gør det gradvist sværere at bevare gode TTI-målinger, efterhånden som applikationer vokser.

TTI og hydrering

Hvad er sammenhængen mellem React-hydrering og tid til interaktivitet (TTI)?

Opsummering af lektionen

Traditionel React-hydrering behandler hele komponenttræet, også statisk indhold, der ikke har brug for JavaScript. Det blokerer for tid til interaktivitet og skalerer dårligt med applikationens størrelse. React 18's forbedringer af samtidig og selektiv hydrering reducerer effekten, men fjerner ikke den grundlæggende omkostning. Den centrale erkendelse er, at det meste af sidens indhold slet ikke har brug for JavaScript, hvilket gør fuld hydrering spildagtig.

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 “Problemet med fuld hydration” gratis?

Ja — hele teksten til “Problemet med fuld 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 “Problemet med fuld hydration”?

Mål omkostningen ved at hydrere en hel React-SPA, og forstå, hvorfor statiske sider ikke har brug for det. 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 1 af 4.

Hvor lang tid tager lektionen “Problemet med fuld 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