Naučite kako implementirati React 'lazy loading' s dijeljenjem koda komponenti kako biste drastično poboljšali performanse aplikacije, korisničko iskustvo i početno vrijeme učitavanja.
React Lazy Loading: Poboljšanje performansi pomoću dijeljenja koda komponenti
U današnjem svijetu web razvoja, performanse su od presudne važnosti. Korisnici očekuju brzo učitavanje i fluidne interakcije. Veliki JavaScript paketi (bundleovi), posebno u složenim React aplikacijama, mogu značajno utjecati na početno vrijeme učitavanja i cjelokupno korisničko iskustvo. Jedna moćna tehnika za rješavanje ovog problema je 'lazy loading' (lijeno učitavanje), specifično kroz dijeljenje koda komponenti. Ovaj članak pruža sveobuhvatan vodič za razumijevanje i implementaciju React 'lazy loadinga' pomoću React.lazy
i Suspense
.
Što su 'Lazy Loading' i 'Code Splitting'?
'Lazy loading', poznat i kao učitavanje na zahtjev, je tehnika koja odgađa učitavanje resursa (u našem slučaju, React komponenti) sve dok oni zaista nisu potrebni. Umjesto da se sav kod aplikacije učita odmah na početku, učitavaju se samo ključni dijelovi, a preostali kod se učitava asinkrono kada korisnik prijeđe na određenu rutu ili interagira s određenom komponentom. To značajno smanjuje početnu veličinu paketa (bundlea) i poboljšava vrijeme do interaktivnosti (TTI).
'Code splitting' (dijeljenje koda) je proces dijeljenja koda vaše aplikacije na manje, lakše upravljive dijelove (chunkove ili bundleove). Ti se paketi zatim mogu učitavati neovisno i na zahtjev. React 'lazy loading' koristi dijeljenje koda kako bi učitao komponente samo kada su potrebne.
Prednosti 'Lazy Loadinga' i dijeljenja koda
- Poboljšano početno vrijeme učitavanja: Smanjenjem početne veličine paketa, preglednik preuzima i parsira manje JavaScripta unaprijed, što rezultira bržim učitavanjem stranice. Ovo je posebno važno za korisnike na sporijim mrežnim vezama ili uređajima.
- Poboljšano korisničko iskustvo: Brže vrijeme učitavanja dovodi do responzivnijeg i ugodnijeg korisničkog iskustva, smanjujući stopu napuštanja stranice (bounce rate) i povećavajući angažman korisnika.
- Smanjena potrošnja resursa: Učitavanje samo potrebnog koda smanjuje memorijski otisak aplikacije, što je posebno korisno za mobilne uređaje.
- Bolji SEO: Tražilice favoriziraju web stranice s brzim vremenom učitavanja, što potencijalno može poboljšati rangiranje vaše web stranice na tražilicama.
Implementacija React 'Lazy Loadinga' s React.lazy
i Suspense
React pruža ugrađeni mehanizam za lijeno učitavanje komponenti koristeći React.lazy
i Suspense
. React.lazy
omogućuje dinamičko importiranje komponente, dok Suspense
pruža način za prikazivanje zamjenskog (fallback) sučelja dok se komponenta učitava.
Korak 1: Dinamički importi s React.lazy
React.lazy
prihvaća funkciju koja poziva import()
. Funkcija import()
je dinamički import koji vraća 'Promise', koji se rješava u modul koji sadrži komponentu koju želite lijeno učitati.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
U ovom primjeru, MyComponent
se ne učitava sve dok se ne renderira. Izraz import('./MyComponent')
dinamički importira komponentu iz datoteke ./MyComponent
. Imajte na umu da je putanja relativna u odnosu na trenutnu datoteku.
Korak 2: Korištenje Suspense
za upravljanje stanjima učitavanja
Budući da lijeno učitavanje uključuje asinkrono učitavanje komponenti, potreban vam je način za upravljanje stanjem učitavanja i prikazivanje zamjenskog sučelja dok se komponenta dohvaća. Tu na scenu stupa Suspense
. Suspense
je React komponenta koja vam omogućuje da 'suspendirate' renderiranje njenih podređenih elemenata (children) dok nisu spremni. Prihvaća fallback
prop, koji specificira sučelje koje će se renderirati dok se podređeni elementi učitavaju.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Učitavanje...
U ovom primjeru, komponenta Suspense
obavija MyComponent
. Dok se MyComponent
učitava, renderirat će se fallback
prop (
). Kada se MyComponent
učita, zamijenit će zamjensko sučelje.
Primjer: Lijeno učitavanje rute u React Router aplikaciji
Lijeno učitavanje je posebno korisno za rute u React Router aplikaciji. Možete lijeno učitavati cijele stranice ili dijelove vaše aplikacije, poboljšavajući početno vrijeme učitavanja vaše web stranice.
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 (
Učitavanje...