Sužinokite, kaip įdiegti React „lazy loading“ su komponentų kodo skaidymu, kad ženkliai pagerintumėte programos našumą, vartotojo patirtį ir pradinį įkėlimo laiką.
React „Lazy Loading“: Našumo Didinimas Dalinant Komponentų Kodą
Šiuolaikiniame interneto svetainių kūrimo pasaulyje našumas yra svarbiausias. Vartotojai tikisi greito įkėlimo laiko ir sklandžios sąveikos. Dideli JavaScript paketai, ypač sudėtingose React programose, gali ženkliai paveikti pradinį įkėlimo laiką ir bendrą vartotojo patirtį. Viena galinga technika šiai problemai spręsti yra „lazy loading“, konkrečiai – komponentų kodo skaidymas. Šiame straipsnyje pateikiamas išsamus vadovas, kaip suprasti ir įdiegti React „lazy loading“ naudojant React.lazy
ir Suspense
.
Kas yra „Lazy Loading“ ir Kodo Skaidymas?
„Lazy loading“, taip pat žinomas kaip įkėlimas pagal pareikalavimą, yra technika, kuri atideda išteklių (mūsų atveju – React komponentų) įkėlimą, kol jų iš tikrųjų prireikia. Vietoj to, kad iš anksto būtų įkeltas visas programos kodas, iš pradžių įkeliamos tik esminės dalys, o likęs kodas įkeliamas asinchroniškai, kai vartotojas pereina į konkretų maršrutą arba sąveikauja su tam tikru komponentu. Tai ženkliai sumažina pradinio paketo dydį ir pagerina interaktyvumo laiką (TTI).
Kodo skaidymas (angl. code splitting) yra procesas, kurio metu jūsų programos kodas yra padalijamas į mažesnes, lengviau valdomas dalis (paketus). Šie paketai gali būti įkeliami nepriklausomai ir pagal pareikalavimą. React „lazy loading“ naudoja kodo skaidymą, kad komponentai būtų įkeliami tik tada, kai jie yra reikalingi.
„Lazy Loading“ ir Kodo Skaidymo Privalumai
- Pagerintas pradinis įkėlimo laikas: Sumažinus pradinio paketo dydį, naršyklė atsisiunčia ir apdoroja mažiau JavaScript kodo iš anksto, todėl puslapiai įkeliami greičiau. Tai ypač svarbu vartotojams, turintiems lėtesnį interneto ryšį ar įrenginius.
- Geresnė vartotojo patirtis: Greitesnis įkėlimo laikas lemia jautresnę ir malonesnę vartotojo patirtį, sumažina atmetimo rodiklius ir padidina vartotojų įsitraukimą.
- Sumažintas išteklių naudojimas: Įkeliant tik būtiną kodą, sumažėja programos atminties naudojimas, o tai ypač naudinga mobiliuosiuose įrenginiuose.
- Geresnis SEO: Paieškos sistemos teikia pirmenybę greitai įkeliamoms svetainėms, o tai gali pagerinti jūsų svetainės reitingą paieškos sistemose.
React „Lazy Loading“ Įgyvendinimas su React.lazy
ir Suspense
React suteikia integruotą mechanizmą komponentų „lazy loading“ įgyvendinimui, naudojant React.lazy
ir Suspense
. React.lazy
leidžia dinamiškai importuoti komponentą, o Suspense
suteikia būdą rodyti atsarginę vartotojo sąsają, kol komponentas yra įkeliamas.
1 žingsnis: Dinaminiai Importai su React.lazy
React.lazy
priima funkciją, kuri kviečia import()
. Funkcija import()
yra dinaminis importas, kuris grąžina „Promise“, kuris išsisprendžia į modulį su komponentu, kurį norite įkelti vėliau („lazy load“).
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
Šiame pavyzdyje MyComponent
nebus įkeltas, kol nebus atvaizduotas. Teiginys import('./MyComponent')
dinamiškai importuoja komponentą iš ./MyComponent
failo. Atkreipkite dėmesį, kad kelias yra santykinis dabartinio failo atžvilgiu.
2 žingsnis: Suspense
Naudojimas Įkėlimo Būsenoms Valdyti
Kadangi „lazy loading“ apima asinchroninį komponentų įkėlimą, jums reikia būdo valdyti įkėlimo būseną ir rodyti atsarginę vartotojo sąsają, kol komponentas yra gaunamas. Būtent čia praverčia Suspense
. Suspense
yra React komponentas, leidžiantis „sustabdyti“ jo vaikinių komponentų atvaizdavimą, kol jie bus paruošti. Jis priima fallback
savybę (prop), kuri nurodo, kurią vartotojo sąsają atvaizduoti, kol vaikiniai komponentai yra įkeliami.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Kraunasi...
Šiame pavyzdyje Suspense
komponentas apgaubia MyComponent
. Kol MyComponent
yra įkeliamas, bus atvaizduojama fallback
savybė (
). Kai MyComponent
bus įkeltas, jis pakeis atsarginę vartotojo sąsają.
Pavyzdys: Maršruto „Lazy Loading“ React Router Programoje
„Lazy loading“ ypač naudingas maršrutams React Router programoje. Galite vėliau įkelti ištisus puslapius ar programos dalis, pagerindami pradinį svetainės įkėlimo laiką.
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 (
Kraunasi...