Lernen Sie, wie Sie React Lazy Loading mit Komponenten-Code-Splitting implementieren, um die Anwendungsleistung, Benutzererfahrung und initialen Ladezeiten drastisch zu verbessern.
React Lazy Loading: Performance-Steigerung mit Komponenten-Code-Splitting
In der heutigen Webentwicklungslandschaft ist die Performance von größter Bedeutung. Benutzer erwarten schnelle Ladezeiten und reibungslose Interaktionen. Große JavaScript-Bundles, insbesondere in komplexen React-Anwendungen, können die initialen Ladezeiten und die allgemeine Benutzererfahrung erheblich beeinträchtigen. Eine leistungsstarke Technik, um dieses Problem anzugehen, ist das Lazy Loading, genauer gesagt das Code-Splitting von Komponenten. Dieser Artikel bietet eine umfassende Anleitung zum Verständnis und zur Implementierung von React Lazy Loading mit React.lazy
und Suspense
.
Was sind Lazy Loading und Code-Splitting?
Lazy Loading, auch bekannt als On-Demand-Laden, ist eine Technik, die das Laden von Ressourcen (in unserem Fall React-Komponenten) aufschiebt, bis sie tatsächlich benötigt werden. Anstatt den gesamten Code der Anwendung im Voraus zu laden, werden nur die wesentlichen Teile initial geladen, und der restliche Code wird asynchron geladen, wenn der Benutzer zu einer bestimmten Route navigiert oder mit einer bestimmten Komponente interagiert. Dies reduziert die initiale Bundle-Größe erheblich und verbessert die Time to Interactive (TTI).
Code-Splitting ist der Prozess, bei dem der Code Ihrer Anwendung in kleinere, besser handhabbare Chunks (Bundles) aufgeteilt wird. Diese Bundles können dann unabhängig und bei Bedarf geladen werden. React Lazy Loading nutzt Code-Splitting, um Komponenten nur dann zu laden, wenn sie benötigt werden.
Vorteile von Lazy Loading und Code-Splitting
- Verbesserte initiale Ladezeit: Indem die initiale Bundle-Größe reduziert wird, lädt und parst der Browser im Voraus weniger JavaScript, was zu schnelleren Seitenladezeiten führt. Dies ist besonders wichtig für Benutzer mit langsameren Netzwerkverbindungen oder Geräten.
- Verbesserte Benutzererfahrung: Schnellere Ladezeiten führen zu einer reaktionsschnelleren und angenehmeren Benutzererfahrung, was die Absprungraten reduziert und das Benutzerengagement erhöht.
- Reduzierter Ressourcenverbrauch: Das Laden von nur dem notwendigen Code reduziert den Speicherbedarf der Anwendung, was besonders für mobile Geräte von Vorteil ist.
- Besseres SEO: Suchmaschinen bevorzugen Websites mit schnellen Ladezeiten, was das Suchmaschinenranking Ihrer Website potenziell verbessern kann.
Implementierung von React Lazy Loading mit React.lazy
und Suspense
React bietet einen integrierten Mechanismus zum Lazy Loading von Komponenten mit React.lazy
und Suspense
. React.lazy
ermöglicht es Ihnen, eine Komponente dynamisch zu importieren, während Suspense
eine Möglichkeit bietet, eine Fallback-UI anzuzeigen, während die Komponente geladen wird.
Schritt 1: Dynamische Importe mit React.lazy
React.lazy
erwartet eine Funktion, die import()
aufruft. Die Funktion import()
ist ein dynamischer Import, der ein Promise zurückgibt, das zu einem Modul mit der Komponente aufgelöst wird, die Sie per Lazy Loading laden möchten.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
In diesem Beispiel wird MyComponent
erst geladen, wenn es gerendert wird. Die Anweisung import('./MyComponent')
importiert die Komponente dynamisch aus der Datei ./MyComponent
. Beachten Sie, dass der Pfad relativ zur aktuellen Datei ist.
Schritt 2: Verwendung von Suspense
zur Behandlung von Ladezuständen
Da Lazy Loading das asynchrone Laden von Komponenten beinhaltet, benötigen Sie eine Möglichkeit, den Ladezustand zu handhaben und eine Fallback-UI anzuzeigen, während die Komponente abgerufen wird. Hier kommt Suspense
ins Spiel. Suspense
ist eine React-Komponente, mit der Sie das Rendern ihrer Kinder "aussetzen" können, bis sie bereit sind. Sie akzeptiert eine fallback
-Prop, die die UI angibt, die während des Ladens der Kinder gerendert werden soll.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Lade...
In diesem Beispiel umschließt die Suspense
-Komponente MyComponent
. Während MyComponent
geladen wird, wird die fallback
-Prop (
) gerendert. Sobald MyComponent
geladen ist, ersetzt es die Fallback-UI.
Beispiel: Lazy Loading einer Route in einer React-Router-Anwendung
Lazy Loading ist besonders nützlich für Routen in einer React-Router-Anwendung. Sie können ganze Seiten oder Abschnitte Ihrer Anwendung per Lazy Loading laden und so die initiale Ladezeit Ihrer Website verbessern.
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 (
Lade...