Põhjalik juhend Reacti koodi tükeldamiseks marsruudipõhise kogumite jaotamise abil, parandades rakenduse jõudlust ja kasutajakogemust. Õppige tehnikaid, parimaid tavasid ja praktilisi rakendusstrateegiaid.
Reacti koodi tükeldamine: marsruudipõhine kogumite jaotamine optimeeritud jõudluse saavutamiseks
Tänapäeva veebiarenduse maastikul on kiire ja reageerimisvõimelise kasutajakogemuse pakkumine esmatähtis. Kasutajad ootavad kohest rahuldust ja aeglaselt laadivad rakendused võivad põhjustada pettumust ja loobumist. Üks võimas tehnika teie Reacti rakenduste jõudluse parandamiseks on koodi tükeldamine. See artikkel süveneb marsruudipõhise koodi tükeldamise eripäradesse, mis on strateegia, mis jaotab teie rakenduse väiksemateks, hallatavateks kogumiteks, laadides ainult praeguse marsruudi jaoks vajaliku koodi.
Koodi tükeldamise mõistmine
Koodi tükeldamine on praktika, mille kohaselt jaotatakse rakenduse kood mitmeks kogumiks, mida saab seejärel laadida nõudmisel või paralleelselt. Koodi tükeldamisega saate oluliselt vähendada oma rakenduse esialgset laadimisaega, kuna brauser peab alla laadima ainult esialgse vaate renderdamiseks vajaliku koodi.
Selle asemel, et pakkuda ühte massiivset JavaScripti faili, võimaldab koodi tükeldamine selle jaotada väiksemateks osadeks, mis on sageli joondatud teie rakenduse konkreetsete funktsioonide või marsruutidega. See lähenemine pakub mitmeid olulisi eeliseid:
- Vähendatud esialgne laadimisaeg: Brauser laadib alla väiksema esialgse kogumi, mis viib kiirema esimese värvimiseni ja parema kasutaja tajuni.
- Parem jõudlus: Väiksemad kogumid tähendavad vähem koodi parsimiseks ja täitmiseks, mis tulemuseks on reageerimisvõimelisem rakendus.
- Täiustatud kasutajakogemus: Kasutajad saavad rakendusega varem suhtlema hakata, kuna kriitiline kood laaditakse kiiresti.
- Tõhus ressursside kasutamine: Iga marsruudi jaoks laaditakse ainult vajalik kood, mis vähendab ribalaiuse tarbimist ja parandab ressursside kasutamist.
Marsruudipõhine koodi tükeldamine: strateegiline lähenemine
Marsruudipõhine koodi tükeldamine keskendub rakenduse jaotamisele selle erinevate marsruutide või lehtede alusel. See on eriti tõhus strateegia üheleheküljeliste rakenduste (SPA) jaoks, kus kogu rakendus laaditakse esialgu, kuid ainult osa sellest on tegelikult igal ajahetkel nähtav.
Marsruudipõhise koodi tükeldamisega muutub iga marsruut või seotud marsruutide rühm eraldi kogumiks. Kui kasutaja navigeerib konkreetsele marsruudile, laaditakse vastav kogum nõudmisel. See tagab, et kasutajad laadivad alla ainult praeguse vaate jaoks vajaliku koodi, minimeerides esialgset laadimisaega ja parandades üldist jõudlust.
Rakendustehnikad: dünaamilised importimised ja React.lazy
React pakub suurepäraseid tööriistu ja API-sid marsruudipõhise koodi tükeldamise rakendamiseks, peamiselt dünaamiliste importimiste ja React.lazy komponendi kaudu.
Dünaamilised importimised
Dünaamilised importimised on JavaScripti funktsioon, mis võimaldab teil mooduleid asünkroonselt laadida. Erinevalt staatilistest importimistest (nt import Component from './Component'
) kasutavad dünaamilised importimised funktsiooni import()
, mis tagastab lubaduse (promise). See lubadus lahendatakse mooduli ekspordiga, kui moodul on laaditud.
See võimaldab komponentide nõudmisel laadimist.
Näide:
const MyComponent = React.lazy(() => import('./MyComponent'));
Selles näites laaditakse MyComponent
ainult siis, kui seda vajatakse, näiteks kui see renderdatakse konkreetse marsruudi sees.
React.lazy
React.lazy
on sisseehitatud Reacti komponent, mis teeb teiste komponentide laisa laadimise lihtsaks. See võtab funktsiooni, mis tagastab lubaduse, mis lahendatakse Reacti komponendiks. Seda kasutatakse tavaliselt koos dünaamiliste importimistega.
React.lazy
kasutamiseks peate mähkima laisalt laaditud komponendi <Suspense>
komponendiga. <Suspense>
komponent võimaldab teil kuvada varu-kasutajaliidest (nt laadimisikooni) komponendi laadimise ajal.
Näide:
import React, { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./routes/Home'));
const About = lazy(() => import('./routes/About'));
const Contact = lazy(() => import('./routes/Contact'));
function App() {
return (
Laadimine...
Selles näites laaditakse komponendid Home
, About
ja Contact
laisalt, kui nende vastavatele marsruutidele ligi pääsetakse. Komponent <Suspense>
kuvab komponentide laadimise ajal teksti „Laadimine...”.
Praktilised rakendamise sammud
Siin on samm-sammuline juhend marsruudipõhise koodi tükeldamise rakendamiseks teie Reacti rakenduses:
- Tuvastage marsruudid: Määrake oma rakenduse marsruudid, mida saab jaotada eraldi kogumiteks. Kaaluge seotud marsruutide rühmitamist ühte kogumisse parema tõhususe saavutamiseks.
- Looge marsruudikomponendid: Looge Reacti komponendid iga marsruudi või marsruutide rühma jaoks. Need komponendid laaditakse laisalt dünaamiliste importimiste ja
React.lazy
abil. - Rakendage laisk laadimine: Kasutage
React.lazy
ja dünaamilisi importimisi marsruudikomponentide asünkroonseks laadimiseks. Mähkige iga laisalt laaditud komponent<Suspense>
komponendiga, et pakkuda laadimise ajal varu-kasutajaliidest. - Seadistage marsruutimine: Kasutage marsruutimisteeki nagu
react-router-dom
, et määratleda marsruudid ja seostada need laisalt laaditud komponentidega. - Testige põhjalikult: Testige oma rakendust põhjalikult, et tagada koodi tükeldamise korrektne toimimine ja laisalt laaditud komponentide ootuspärane laadimine.
- Optimeerige kogumite suurust: Analüüsige oma kogumite suurust ja tuvastage võimalusi nende suuruse vähendamiseks. Kaaluge tööriistade, nagu Webpack Bundle Analyzer, kasutamist, et visualiseerida oma kogumite sisu ja tuvastada suuri sõltuvusi.
Täpsemad tehnikad ja kaalutlused
Kuigi marsruudipõhise koodi tükeldamise põhirakendus on suhteliselt lihtne, on mitmeid täpsemaid tehnikaid ja kaalutlusi, mis võivad teie rakenduse jõudlust ja kasutajakogemust veelgi parandada.
Eellaadimine
Eellaadimine hõlmab ressursside (nt kogumite) laadimist enne, kui neid tegelikult vaja on. See võib olla kasulik rakenduse tajutava jõudluse parandamiseks, kuna kasutajad ei pruugi uuele marsruudile navigeerides märgata laadimisviivitust.
Eellaadimist saate rakendada mitmesuguste tehnikate abil, näiteks:
<link rel="prefetch">
: See HTML-märgend annab brauserile käsu määratud ressurss taustal alla laadida.react-router-dom
'i komponent<Link>
: Saate kasutada atribuutiprefetch
, et eellaadida konkreetse lingiga seotud ressursse.- Kohandatud eellaadimise loogika: Saate rakendada oma eellaadimise loogikat JavaScripti ja funktsiooni
import()
abil.
Näide, kasutades react-router-dom
'i <Link>
:
import { Link } from 'react-router-dom';
function Nav() {
return (
);
}
Serveripoolne renderdamine (SSR) ja koodi tükeldamine
Serveripoolse renderdamise (SSR) kombineerimine koodi tükeldamisega võib veelgi parandada teie rakenduse jõudlust, eriti esialgsete laadimisaegade osas. SSR võimaldab teil renderdada esialgse HTML-i serveris, mis seejärel saadetakse kliendile. See vähendab JavaScripti kogust, mida kliendis tuleb alla laadida ja käivitada, mis viib kiirema esimese värvimiseni.
Kasutades SSR-i koos koodi tükeldamisega, on oluline tagada, et server saaks hakkama ka dünaamiliste importimiste ja React.lazy
-ga. Raamistikud nagu Next.js ja Gatsby pakuvad sisseehitatud tuge SSR-ile ja koodi tükeldamisele, muutes nende tehnikate rakendamise lihtsamaks.
Vigade käsitlemine
Laisa laadimise kasutamisel on oluline käsitleda võimalikke vigu, mis võivad laadimisprotsessi käigus tekkida. Näiteks võib võrguühendus katkeda või server olla kättesaamatu.
Saate kasutada komponenti <ErrorBoundary>
, et püüda kinni vigu, mis tekivad laisalt laaditud komponentide renderdamisel. Komponent <ErrorBoundary>
võimaldab teil vea korral kuvada varu-kasutajaliidest.
Näide:
import React, { Suspense, lazy } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function ErrorFallback() {
return (
Ups! Midagi läks valesti.
);
}
function MyErrorBoundary(props) {
return (
}>
{props.children}
);
}
function App() {
return (
Laadimine...