Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forståelse av Lastere | Henting og Visning av Data i Next.js
Next.js 14-mestring for Bygging av Moderne Webapplikasjoner

bookForståelse av Lastere

Tidligere har vi gjennomgått hvordan man gjør appen dynamisk. Imidlertid kan håndtering av store datamengder føre til trege dataforespørsler, noe som kan påvirke ytelsen til applikasjonen negativt.

La oss nå se nærmere på strategier for å forbedre brukeropplevelsen ved håndtering av trege dataforespørsler.

Teori

Vi kan benytte en mye brukt teknikk kalt Streaming.

Streaming er en metode for å sende informasjon i mindre deler i stedet for alt på én gang. Tenk på det som å dele opp en lang reise i mindre etapper og kun ta hvert steg når du er klar. Dette bidrar til å unngå forsinkelser og lar deg se og bruke deler av en nettside uten å måtte vente på at alt skal lastes inn.

I Next.js finnes det to måter å bruke streaming på:

  • For hele nettsiden bruker vi en fil som heter loading.tsx;
  • For spesifikke deler av nettsiden bruker vi noe som heter <Suspense>.

La oss se nærmere på hvordan dette fungerer.

Strømming av hele siden

Opprett en loading.tsx-fil i dashboard-mappen for å legge til en laster for hele dashboard-siden.

  • loading.tsx: Dette er en spesiell fil i Next.js som bruker Suspense. Den hjelper oss å lage et midlertidig brukergrensesnitt (fallback UI) som vises mens hovedinnholdet på siden lastes inn;
  • Siden <Sidebar> er statisk (ikke endres), vises den umiddelbart. Brukere kan samhandle med den selv om det dynamiske innholdet fortsatt lastes inn.

Godt jobbet! Du har nettopp brukt strømming.

Feilretting

Problemet vi opplever nå er at lasteren som brukes i loading.tsx-filen blir brukt på alle sider i dashboard-mappen. Men hva om vi trenger spesifikke UI-elementer for hver app-side?

For å løse denne feilen kan vi implementere Route Groups. Opprett en (overview)-mappe inne i dashboard-katalogen og flytt loading.tsx- og page.tsx-filene dit.

Ved å gjøre dette vil loading.tsx-filen kun gjelde for dashboard-siden, og problemet blir løst.

Rutegrupper hjelper oss med å organisere filer på en ryddig måte uten å endre nettadressen. Når vi lager en mappe med parenteser (), vil mappenavnet ikke være en del av nettadressen. For eksempel blir /dashboard/(overview)/page.tsx bare til /dashboard.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain more about how Suspense works for specific parts of a page?

What are some best practices for using loading.tsx in Next.js?

How do I move files into a route group and what should I watch out for?

Awesome!

Completion rate improved to 2.08

bookForståelse av Lastere

Sveip for å vise menyen

Tidligere har vi gjennomgått hvordan man gjør appen dynamisk. Imidlertid kan håndtering av store datamengder føre til trege dataforespørsler, noe som kan påvirke ytelsen til applikasjonen negativt.

La oss nå se nærmere på strategier for å forbedre brukeropplevelsen ved håndtering av trege dataforespørsler.

Teori

Vi kan benytte en mye brukt teknikk kalt Streaming.

Streaming er en metode for å sende informasjon i mindre deler i stedet for alt på én gang. Tenk på det som å dele opp en lang reise i mindre etapper og kun ta hvert steg når du er klar. Dette bidrar til å unngå forsinkelser og lar deg se og bruke deler av en nettside uten å måtte vente på at alt skal lastes inn.

I Next.js finnes det to måter å bruke streaming på:

  • For hele nettsiden bruker vi en fil som heter loading.tsx;
  • For spesifikke deler av nettsiden bruker vi noe som heter <Suspense>.

La oss se nærmere på hvordan dette fungerer.

Strømming av hele siden

Opprett en loading.tsx-fil i dashboard-mappen for å legge til en laster for hele dashboard-siden.

  • loading.tsx: Dette er en spesiell fil i Next.js som bruker Suspense. Den hjelper oss å lage et midlertidig brukergrensesnitt (fallback UI) som vises mens hovedinnholdet på siden lastes inn;
  • Siden <Sidebar> er statisk (ikke endres), vises den umiddelbart. Brukere kan samhandle med den selv om det dynamiske innholdet fortsatt lastes inn.

Godt jobbet! Du har nettopp brukt strømming.

Feilretting

Problemet vi opplever nå er at lasteren som brukes i loading.tsx-filen blir brukt på alle sider i dashboard-mappen. Men hva om vi trenger spesifikke UI-elementer for hver app-side?

For å løse denne feilen kan vi implementere Route Groups. Opprett en (overview)-mappe inne i dashboard-katalogen og flytt loading.tsx- og page.tsx-filene dit.

Ved å gjøre dette vil loading.tsx-filen kun gjelde for dashboard-siden, og problemet blir løst.

Rutegrupper hjelper oss med å organisere filer på en ryddig måte uten å endre nettadressen. Når vi lager en mappe med parenteser (), vil mappenavnet ikke være en del av nettadressen. For eksempel blir /dashboard/(overview)/page.tsx bare til /dashboard.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 5
some-alt