Научете как да внедрите React lazy loading с разделяне на кода на компоненти, за да подобрите драстично производителността на приложението, потребителското изживяване и времето за първоначално зареждане.
React Lazy Loading: Повишаване на производителността с разделяне на кода на компоненти
В днешния уеб пейзаж, производителността е от първостепенно значение. Потребителите очакват бързо време за зареждане и плавни взаимодействия. Големите JavaScript пакети, особено в сложни React приложения, могат значително да повлияят на времето за първоначално зареждане и цялостното потребителско изживяване. Една мощна техника за справяне с това е lazy loading, по-специално разделянето на кода на компоненти. Тази статия предоставя изчерпателно ръководство за разбиране и прилагане на React lazy loading с помощта на React.lazy
и Suspense
.
Какво е Lazy Loading и разделяне на кода?
Lazy loading, известен също като зареждане при поискване, е техника, която отлага зареждането на ресурси (в нашия случай React компоненти), докато те действително не са необходими. Вместо да зарежда целия код на приложението предварително, само основните части се зареждат първоначално, а останалият код се зарежда асинхронно, когато потребителят навигира до конкретен маршрут или взаимодейства с конкретен компонент. Това значително намалява първоначалния размер на пакета и подобрява времето до интерактивност (TTI).
Разделянето на код е процесът на разделяне на кода на вашето приложение на по-малки, по-управляеми парчета (пакети). След това тези пакети могат да бъдат заредени независимо и при поискване. React lazy loading използва разделянето на код, за да зарежда компоненти само когато са необходими.
Ползи от Lazy Loading и разделянето на кода
- Подобрено време за първоначално зареждане: Чрез намаляване на първоначалния размер на пакета, браузърът изтегля и анализира по-малко JavaScript предварително, което води до по-бързо време за зареждане на страницата. Това е особено важно за потребители с по-бавни мрежови връзки или устройства.
- Подобрено потребителско изживяване: По-бързото време за зареждане води до по-отзивчиво и приятно потребителско изживяване, намалявайки процента на отпадане и увеличавайки ангажираността на потребителите.
- Намалена консумация на ресурси: Зареждането само на необходимия код намалява отпечатъка на паметта на приложението, особено полезно за мобилни устройства.
- По-добро SEO: Търсачките предпочитат уебсайтове с бързо време за зареждане, което потенциално подобрява класирането на вашия уебсайт в търсачките.
Внедряване на React Lazy Loading с React.lazy
и Suspense
React предоставя вграден механизъм за lazy loading на компоненти с помощта на React.lazy
и Suspense
. React.lazy
ви позволява динамично да импортирате компонент, докато Suspense
предоставя начин да покажете резервен потребителски интерфейс, докато компонентът се зарежда.
Стъпка 1: Динамични импорти с React.lazy
React.lazy
приема функция, която извиква import()
. Функцията import()
е динамичен импорт, който връща Promise, който се разрешава към модул, съдържащ компонента, който искате да заредите lazy.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
В този пример, MyComponent
не се зарежда, докато не бъде рендиран. Операторът import('./MyComponent')
динамично импортира компонента от файла ./MyComponent
. Обърнете внимание, че пътят е относителен към текущия файл.
Стъпка 2: Използване на Suspense
за обработка на състоянията на зареждане
Тъй като lazy loading включва асинхронно зареждане на компоненти, ви трябва начин да обработите състоянието на зареждане и да покажете резервен потребителски интерфейс, докато компонентът се извлича. Тук идва Suspense
. Suspense
е React компонент, който ви позволява да "спрете" рендирането на неговите деца, докато не са готови. Той приема fallback
prop, който указва потребителския интерфейс, който да се рендира, докато децата се зареждат.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading...
В този пример компонентът Suspense
обгръща MyComponent
. Докато MyComponent
се зарежда, ще бъде рендиран fallback
prop (
). След като MyComponent
се зареди, той ще замени резервния потребителски интерфейс.
Пример: Lazy Loading на маршрут в React Router приложение
Lazy loading е особено полезен за маршрути в React Router приложение. Можете да lazy load цели страници или секции от вашето приложение, подобрявайки времето за първоначално зареждане на вашия уебсайт.
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 (
Loading...