Hvordan optimeres React applikationer med Lazy Loading?
Til dine komponenter, billeder og hvad ikke

Lazy loading er en gammel teknik til at optimere webapplikationer såvel som på mobilapps. Sagen er ret ligetil - gengiv ikke ting, hvis de ikke ses eller kræves i det øjeblik. Så hvis vi for eksempel har en liste over indlæg, der skal vises, skal vi oprindeligt kun gengive det, der er på visningen. Det betyder, at resten af elementerne gengives senere efter behov (når de er i visningen eller ved at være i visningen).
Hvorfor Lazy Loading?
De fleste gange ser vores brugere ikke hele websiden, i det mindste i starten. Uanset hvordan vores applikationsgrænseflade er struktureret, er der visse komponenter, som brugeren muligvis ikke har brug for i starten eller nogensinde!
I disse tilfælde skader gengivelse af disse komponenter ikke kun vores applikations ydeevne, men spilder også mange ressourcer (især når de har billeder eller lignende data-sultne indhold).
Så læsning eller gengivelse af disse komponenter efter behov ser ud til at være en mere effektiv beslutning. Det kan forbedre applikationens ydeevne og samtidig spare os for mange ressourcer.
Hvordan?
Vi laver en prøveansøgning, hvor vi kan anvende doven indlæsning. Først skal vi initialisere vores React-applikation ved hjælp create-react-app
af nedenstående kommandoer:
create-react-app lazydemocd lazydemonpm run start
Dette kan tage et par minutter at initialisere og åbne vores reageringsapplikation i browserens 3000
port som standard.
create-react-app
installeret på din pc, kan du installere med kommandoen:
npm install -g create-react-app
Nu laver vi en liste, der viser nogle tilfældige indlæg. Så lad os få nogle dummy-data først. Opret en fil med navnet data.js
inde i src
mappen for vores projekt. Jeg har lige kopieret json
svaret fra dette JSON
pladsholder-slutpunkt //jsonplaceholder.typicode.com/posts. Du kan også oprette dine egne dummy-data. At følge nedenstående format skal være tilstrækkeligt til denne vejledning:

Lad os erstatte App.js
filens indhold med nedenstående kode:


Her laver vi simpelthen en liste posts
med deres title
og body
. Og med nogle enkle CSS
ændringer får vi udsigten til højre. Her er den fulde liste, der gengives på én gang. Hvis vi ikke oprindeligt ønsker at gengive alt, skal vi ansøge lazy loading
. Lad os installere det i vores projekt:
Kilde: twobin / react-lazyload
npm install —-save react-lazyload
Lad os nu opdatere App.js
filen ved at importere og anvende lazyload
.

Brug react-lazyload
er ret ligetil, bare pakk komponenten med t viser Indlæsning ... indtil komponenten er indlæst. Vi kan også e eff højde et af LazyLoad komponent. Du kan finde flere detaljer i dokumentationen: //github.com/twobin/react-lazyload#height …
LazyLoad>. Here we are using a placeholde
r component
set th
ective
and offs
Nu gengives ikke alle indlæg oprindeligt. Kun nogle få gengives oprindeligt afhængigt af visningen. Men da indholdet indtil nu er tekstmæssigt, kan effekten næppe realiseres, medmindre vi inspicerer og ser, at DOM ændrer sig, når de bevæger sig fra loading
til loaded
.
For at gøre vores dovne indlæsning mere effektiv, lad os inkorporere billeder i indlæg. Vi bruger Lorem Picsum til vores fotos. Vores opdaterede Post
komponent skal se ud nedenfor:

//picsum.photos/id/ [image_id ]/ [bredde] / [højde]
Nu, som jeg sagde tidligere, er billeder datahungrige komponenter på en webside, og her indlæser vi billeder til hvert indlæg. Selvom hele komponenten er doven indlæst, og billedet også indlæses med komponenten, indlæses billedet lidt sent og ikke så glat. Så vi kan skabe en bedre billedindlæsningsoplevelse for vores bruger ved hjælp af LazyLoad til individuelle billeder.
Teknikken er at indlæse et billede af meget lav kvalitet som pladsholder, og derefter bliver det originale billede indlæst. Så finalen App.js
ser ud som -

Nu kan vi scroll
listen med vores for inspect element open
at se, hvordan disse komponenter ændres, når de kommer tæt på visningen, derefter gengives, og pladsholderen bliver erstattet af det faktiske indhold.
Og vi er færdige, for nu arbejder vores LazyLoad med al sin nåde. Det var ret let !!!

Github: //github.com/nowshad-sust/lazydemo
Reager LazyLoad: twobin / react-lazyload