Leer hoe u React lazy loading met component code splitting implementeert om de applicatieprestaties, gebruikerservaring en initiƫle laadtijden drastisch te verbeteren.
React Lazy Loading: Prestaties Verbeteren met Component Code Splitting
In het hedendaagse landschap van webontwikkeling zijn prestaties van het grootste belang. Gebruikers verwachten snelle laadtijden en soepele interacties. Grote JavaScript-bundels, met name in complexe React-applicaties, kunnen de initiële laadtijden en de algehele gebruikerservaring aanzienlijk beïnvloeden. Een krachtige techniek om dit aan te pakken is lazy loading, specifiek component code splitting. Dit artikel biedt een uitgebreide gids voor het begrijpen en implementeren van React lazy loading met behulp van React.lazy
en Suspense
.
Wat is Lazy Loading en Code Splitting?
Lazy loading, ook wel on-demand laden genoemd, is een techniek die het laden van resources (in ons geval React-componenten) uitstelt totdat ze daadwerkelijk nodig zijn. In plaats van alle code van de applicatie vooraf te laden, worden alleen de essentiƫle onderdelen initieel geladen, en de resterende code wordt asynchroon geladen wanneer de gebruiker naar een specifieke route navigeert of interactie heeft met een bepaald component. Dit vermindert de initiƫle bundelgrootte aanzienlijk en verbetert de time to interactive (TTI).
Code splitting is het proces waarbij de code van uw applicatie wordt opgedeeld in kleinere, beter beheersbare brokken (bundels). Deze bundels kunnen vervolgens onafhankelijk en on-demand worden geladen. React lazy loading maakt gebruik van code splitting om componenten alleen te laden wanneer ze nodig zijn.
Voordelen van Lazy Loading en Code Splitting
- Verbeterde Initiƫle Laadtijd: Door de initiƫle bundelgrootte te verkleinen, downloadt en verwerkt de browser vooraf minder JavaScript, wat resulteert in snellere laadtijden van de pagina. Dit is met name cruciaal voor gebruikers met langzamere netwerkverbindingen of apparaten.
- Verbeterde Gebruikerservaring: Snellere laadtijden leiden tot een responsievere en aangenamere gebruikerservaring, wat het bouncepercentage verlaagt en de betrokkenheid van gebruikers verhoogt.
- Minder Resourceverbruik: Door alleen de noodzakelijke code te laden, wordt de geheugenvoetafdruk van de applicatie kleiner, wat vooral gunstig is voor mobiele apparaten.
- Betere SEO: Zoekmachines geven de voorkeur aan websites met snelle laadtijden, wat de positie van uw website in de zoekresultaten kan verbeteren.
React Lazy Loading Implementeren met React.lazy
en Suspense
React biedt een ingebouwd mechanisme voor het lazy laden van componenten met behulp van React.lazy
en Suspense
. React.lazy
stelt u in staat om een component dynamisch te importeren, terwijl Suspense
een manier biedt om een fallback-UI weer te geven terwijl het component wordt geladen.
Stap 1: Dynamische Imports met React.lazy
React.lazy
neemt een functie die import()
aanroept. De import()
-functie is een dynamische import die een Promise retourneert, die wordt omgezet in een module met het component dat u wilt lazy loaden.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
In dit voorbeeld wordt MyComponent
niet geladen totdat het wordt gerenderd. De import('./MyComponent')
-instructie importeert het component dynamisch uit het ./MyComponent
-bestand. Merk op dat het pad relatief is ten opzichte van het huidige bestand.
Stap 2: Suspense
Gebruiken om Laadstatussen af te Handelen
Omdat lazy loading het asynchroon laden van componenten inhoudt, heeft u een manier nodig om de laadstatus af te handelen en een fallback-UI weer te geven terwijl het component wordt opgehaald. Hier komt Suspense
van pas. Suspense
is een React-component waarmee u het renderen van de onderliggende componenten kunt "opschorten" totdat ze klaar zijn. Het accepteert een fallback
-prop, die de UI specificeert die moet worden weergegeven terwijl de onderliggende componenten worden geladen.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Laden...
In dit voorbeeld omhult de Suspense
-component MyComponent
. Terwijl MyComponent
wordt geladen, wordt de fallback
-prop (
) weergegeven. Zodra MyComponent
is geladen, zal het de fallback-UI vervangen.
Voorbeeld: Een Route Lazy Loaden in een React Router Applicatie
Lazy loading is bijzonder nuttig voor routes in een React Router-applicatie. U kunt hele pagina's of secties van uw applicatie lazy loaden, waardoor de initiƫle laadtijd van uw website wordt verbeterd.
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
const Contact = lazy(() => import('./pages/Contact'));
function App() {
return (
Laden...