Opi toteuttamaan Reactin laiska lataus komponenttien koodinjakamisella parantaaksesi merkittävästi sovelluksen suorituskykyä, käyttökokemusta ja latausaikoja.
Reactin laiska lataus: suorituskyvyn parantaminen komponenttien koodinjakamisella
Nykypäivän web-kehityksessä suorituskyky on ensiarvoisen tärkeää. Käyttäjät odottavat nopeita latausaikoja ja sujuvaa vuorovaikutusta. Suuret JavaScript-paketit, erityisesti monimutkaisissa React-sovelluksissa, voivat vaikuttaa merkittävästi alkulatausaikoihin ja yleiseen käyttökokemukseen. Yksi tehokas tekniikka tämän ongelman ratkaisemiseksi on laiska lataus (lazy loading), erityisesti komponenttien koodinjakaminen. Tämä artikkeli tarjoaa kattavan oppaan Reactin laiskan latauksen ymmärtämiseen ja toteuttamiseen käyttämällä React.lazy
ja Suspense
-komponentteja.
Mitä ovat laiska lataus ja koodinjakaminen?
Laiska lataus, joka tunnetaan myös nimellä tarvepohjainen lataus, on tekniikka, joka lykkää resurssien (tässä tapauksessa React-komponenttien) lataamista, kunnes niitä todella tarvitaan. Sen sijaan, että kaikki sovelluksen koodi ladattaisiin etukäteen, vain välttämättömät osat ladataan aluksi, ja loput koodista ladataan asynkronisesti, kun käyttäjä siirtyy tietylle reitille tai on vuorovaikutuksessa tietyn komponentin kanssa. Tämä pienentää merkittävästi alkuperäisen paketin kokoa ja parantaa interaktiivisuuteen kuluvaa aikaa (TTI).
Koodinjakaminen on prosessi, jossa sovelluksesi koodi jaetaan pienempiin, paremmin hallittaviin osiin (paketteihin). Nämä paketit voidaan sitten ladata itsenäisesti ja tarpeen mukaan. Reactin laiska lataus hyödyntää koodinjakamista ladatakseen komponentteja vain silloin, kun niitä tarvitaan.
Laiskan latauksen ja koodinjakamisen hyödyt
- Parempi alkulatausaika: Pienentämällä alkulatauspaketin kokoa selain lataa ja jäsentää vähemmän JavaScriptiä etukäteen, mikä nopeuttaa sivun latautumista. Tämä on erityisen tärkeää käyttäjille, joilla on hitaampi verkkoyhteys tai laite.
- Parannettu käyttökokemus: Nopeammat latausajat johtavat reagoivampaan ja miellyttävämpään käyttökokemukseen, mikä vähentää poistumisprosenttia ja lisää käyttäjien sitoutumista.
- Vähentynyt resurssien kulutus: Vain tarvittavan koodin lataaminen pienentää sovelluksen muistinkäyttöä, mikä on erityisen hyödyllistä mobiililaitteille.
- Parempi SEO: Hakukoneet suosivat nopeasti latautuvia verkkosivustoja, mikä voi parantaa sivustosi sijoitusta hakutuloksissa.
Reactin laiskan latauksen toteuttaminen React.lazy
ja Suspense
avulla
React tarjoaa sisäänrakennetun mekanismin komponenttien laiskalle lataukselle käyttämällä React.lazy
ja Suspense
-komponentteja. React.lazy
mahdollistaa komponentin dynaamisen tuonnin, kun taas Suspense
tarjoaa tavan näyttää varakäyttöliittymä (fallback UI), kun komponenttia ladataan.
Vaihe 1: Dynaamiset tuonnit React.lazy
-funktion avulla
React.lazy
ottaa argumentikseen funktion, joka kutsuu import()
-funktiota. import()
-funktio on dynaaminen tuonti, joka palauttaa Promise-olion, joka ratkeaa moduuliksi, joka sisältää laiskasti ladattavan komponentin.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
Tässä esimerkissä MyComponent
-komponenttia ei ladata ennen kuin se renderöidään. Lauseke import('./MyComponent')
tuo komponentin dynaamisesti ./MyComponent
-tiedostosta. Huomaa, että polku on suhteellinen nykyiseen tiedostoon nähden.
Vaihe 2: Lataustilojen käsittely Suspense
-komponentilla
Koska laiska lataus sisältää komponenttien asynkronisen lataamisen, tarvitset tavan käsitellä lataustilaa ja näyttää varakäyttöliittymä komponentin noutamisen aikana. Tässä kohtaa Suspense
astuu kuvaan. Suspense
on React-komponentti, joka antaa sinun "keskeyttää" sen lapsielementtien renderöinnin, kunnes ne ovat valmiita. Se ottaa fallback
-propsin, joka määrittää käyttöliittymän, joka renderöidään lasten latautuessa.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Ladataan...
Tässä esimerkissä Suspense
-komponentti käärii MyComponent
-komponentin. Kun MyComponent
latautuu, fallback
-propsin arvo (
) renderöidään. Kun MyComponent
on ladattu, se korvaa varakäyttöliittymän.
Esimerkki: Reitin laiska lataus React Router -sovelluksessa
Laiska lataus on erityisen hyödyllinen React Router -sovelluksen reiteille. Voit ladata laiskasti kokonaisia sivuja tai sovelluksesi osioita, mikä parantaa verkkosivustosi alkulatausaikaa.
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 (
Ladataan...