Ilova samaradorligi, foydalanuvchi tajribasi va dastlabki yuklanish vaqtini keskin yaxshilash uchun komponent kodini bo'lish bilan React lazy loading'ni qanday joriy qilishni o'rganing.
React Lazy Loading: Komponent kodini bo'lish orqali samaradorlikni oshirish
Bugungi veb-dasturlash sohasida samaradorlik eng muhim omildir. Foydalanuvchilar tez yuklanish vaqtini va silliq oʻzaro taʼsirni kutishadi. Katta hajmdagi JavaScript toʻplamlari, ayniqsa murakkab React ilovalarida, dastlabki yuklanish vaqtiga va umumiy foydalanuvchi tajribasiga sezilarli taʼsir koʻrsatishi mumkin. Bu muammoni hal qilishning kuchli usullaridan biri bu lazy loading (yalqov yuklash), xususan, komponent kodini boʻlishdir. Ushbu maqola React.lazy
va Suspense
yordamida React lazy loading'ni tushunish va amalga oshirish boʻyicha toʻliq qoʻllanmani taqdim etadi.
Lazy Loading va kodni bo'lish nima?
Lazy loading, shuningdek, talab boʻyicha yuklash deb ham nomlanadi, bu resurslarni (bizning holatimizda React komponentlarini) ular haqiqatda kerak boʻlgunga qadar yuklashni kechiktiradigan usuldir. Ilovaning barcha kodini oldindan yuklash oʻrniga, dastlab faqat eng muhim qismlar yuklanadi, qolgan kod esa foydalanuvchi maʼlum bir marshrutga oʻtganda yoki maʼlum bir komponent bilan oʻzaro aloqada boʻlganda asinxron tarzda yuklanadi. Bu dastlabki toʻplam hajmini sezilarli darajada kamaytiradi va interaktivlikka erishish vaqtini (TTI) yaxshilaydi.
Kod splitting (kodni boʻlish) – bu ilovangiz kodini kichikroq, boshqarilishi oson boʻlgan qismlarga (toʻplamlarga) ajratish jarayonidir. Keyin bu toʻplamlarni mustaqil ravishda va talab boʻyicha yuklash mumkin. React lazy loading komponentlarni faqat kerak boʻlganda yuklash uchun kodni boʻlish imkoniyatidan foydalanadi.
Lazy Loading va kodni bo'lishning afzalliklari
- Dastlabki yuklanish vaqtining yaxshilanishi: Dastlabki toʻplam hajmini kamaytirish orqali brauzer oldindan kamroq JavaScript kodini yuklab oladi va tahlil qiladi, bu esa sahifaning tezroq yuklanishiga olib keladi. Bu, ayniqsa, sekin tarmoq ulanishlari yoki qurilmalarida boʻlgan foydalanuvchilar uchun juda muhimdir.
- Foydalanuvchi tajribasining yaxshilanishi: Tezroq yuklanish vaqtlari yanada sezgir va yoqimli foydalanuvchi tajribasiga olib keladi, bu esa saytdan tez chiqib ketishlar sonini kamaytiradi va foydalanuvchi faolligini oshiradi.
- Resurs sarfining kamayishi: Faqat kerakli kodni yuklash ilovaning xotiradagi hajmini kamaytiradi, bu ayniqsa mobil qurilmalar uchun foydalidir.
- Yaxshilangan SEO: Qidiruv tizimlari tez yuklanadigan veb-saytlarni afzal koʻradi, bu esa veb-saytingizning qidiruv tizimidagi reytingini yaxshilashi mumkin.
React.lazy
va Suspense
yordamida React Lazy Loading'ni amalga oshirish
React React.lazy
va Suspense
yordamida komponentlarni "yalqov" usulda yuklash uchun oʻrnatilgan mexanizmni taqdim etadi. React.lazy
komponentni dinamik ravishda import qilish imkonini beradi, Suspense
esa komponent yuklanayotganda zaxira interfeysni (fallback UI) koʻrsatish usulini taʼminlaydi.
1-qadam: React.lazy
bilan dinamik importlar
React.lazy
import()
funksiyasini chaqiradigan funksiyani qabul qiladi. import()
funksiyasi dinamik import boʻlib, u siz "yalqov" usulda yuklamoqchi boʻlgan komponentni oʻz ichiga olgan modulga hal qilinadigan Promise'ni qaytaradi.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
Ushbu misolda, MyComponent
render qilinmaguncha yuklanmaydi. import('./MyComponent')
ifodasi komponentni ./MyComponent
faylidan dinamik ravishda import qiladi. Eʼtibor bering, yoʻl joriy faylga nisbatan koʻrsatilgan.
2-qadam: Yuklanish holatlarini boshqarish uchun Suspense
'dan foydalanish
Lazy loading komponentlarning asinxron yuklanishini oʻz ichiga olganligi sababli, siz yuklanish holatini boshqarish va komponent olinayotganda zaxira interfeysni koʻrsatish usuliga ehtiyoj sezasiz. Aynan shu yerda Suspense
yordamga keladi. Suspense
– bu React komponenti boʻlib, u oʻzining farzand elementlari tayyor boʻlgunga qadar ularning render qilinishini "toʻxtatib turish" imkonini beradi. U fallback
propini qabul qiladi, bu esa farzand elementlar yuklanayotganda koʻrsatiladigan interfeysni belgilaydi.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading...
Ushbu misolda Suspense
komponenti MyComponent
ni oʻrab turibdi. MyComponent
yuklanayotganda, fallback
propi (
) render qilinadi. MyComponent
yuklanib boʻlgach, u zaxira interfeysni almashtiradi.
Misol: React Router ilovasida marshrutni Lazy Loading qilish
Lazy loading React Router ilovasidagi marshrutlar uchun ayniqsa foydalidir. Siz ilovangizning butun sahifalari yoki boʻlimlarini "yalqov" usulda yuklashingiz mumkin, bu esa veb-saytingizning dastlabki yuklanish vaqtini yaxshilaydi.
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...