یاد بگیرید چگونه با پیادهسازی بارگذاری تنبل (lazy loading) و تفکیک کد کامپوننت در React، عملکرد برنامه، تجربه کاربری و زمان بارگذاری اولیه را به طور چشمگیری بهبود بخشید.
بارگذاری تنبل در React: افزایش عملکرد با تفکیک کد کامپوننت
در چشمانداز توسعه وب امروزی، عملکرد از اهمیت بالایی برخوردار است. کاربران انتظار زمان بارگذاری سریع و تعاملات روان را دارند. باندلهای بزرگ جاوا اسکریپت، بهویژه در برنامههای پیچیده React، میتوانند به طور قابل توجهی بر زمان بارگذاری اولیه و تجربه کلی کاربر تأثیر بگذارند. یک تکنیک قدرتمند برای حل این مشکل، بارگذاری تنبل (lazy loading)، بهطور خاص تفکیک کد کامپوننت است. این مقاله یک راهنمای جامع برای درک و پیادهسازی بارگذاری تنبل در React با استفاده از React.lazy
و Suspense
ارائه میدهد.
بارگذاری تنبل و تفکیک کد چیست؟
بارگذاری تنبل (Lazy loading)، که با نام بارگذاری بر اساس تقاضا نیز شناخته میشود، تکنیکی است که بارگذاری منابع (در مورد ما، کامپوننتهای React) را تا زمانی که واقعاً به آنها نیاز باشد به تعویق میاندازد. به جای بارگذاری تمام کدهای برنامه از ابتدا، تنها بخشهای ضروری در ابتدا بارگذاری میشوند و کدهای باقیمانده به صورت ناهمزمان (asynchronously) زمانی که کاربر به یک مسیر خاص میرود یا با یک کامپوننت خاص تعامل میکند، بارگذاری میشوند. این کار به طور قابل توجهی حجم باندل اولیه را کاهش داده و زمان رسیدن به تعامل (TTI) را بهبود میبخشد.
تفکیک کد (Code splitting) فرآیند تقسیم کد برنامه شما به قطعات (باندلهای) کوچکتر و قابل مدیریتتر است. این باندلها سپس میتوانند به طور مستقل و بر اساس تقاضا بارگذاری شوند. بارگذاری تنبل در React از تفکیک کد برای بارگذاری کامپوننتها تنها زمانی که مورد نیاز هستند، بهره میبرد.
مزایای بارگذاری تنبل و تفکیک کد
- بهبود زمان بارگذاری اولیه: با کاهش حجم باندل اولیه، مرورگر جاوا اسکریپت کمتری را در ابتدا دانلود و تجزیه میکند، که منجر به زمان بارگذاری سریعتر صفحه میشود. این امر بهویژه برای کاربرانی که از اتصالات شبکه یا دستگاههای کندتر استفاده میکنند، حیاتی است.
- بهبود تجربه کاربری: زمان بارگذاری سریعتر منجر به یک تجربه کاربری پاسخگوتر و لذتبخشتر میشود، نرخ پرش (bounce rates) را کاهش داده و تعامل کاربر را افزایش میدهد.
- کاهش مصرف منابع: بارگذاری تنها کدهای ضروری، حافظه مصرفی برنامه را کاهش میدهد، که بهویژه برای دستگاههای موبایل مفید است.
- سئوی بهتر: موتورهای جستجو وبسایتهایی با زمان بارگذاری سریع را ترجیح میدهند، که به طور بالقوه میتواند رتبه وبسایت شما در موتورهای جستجو را بهبود بخشد.
پیادهسازی بارگذاری تنبل در React با استفاده از React.lazy
و Suspense
ریاکت یک مکانیزم داخلی برای بارگذاری تنبل کامپوننتها با استفاده از React.lazy
و Suspense
فراهم میکند. React.lazy
به شما امکان میدهد یک کامپوننت را به صورت پویا وارد کنید (dynamically import)، در حالی که Suspense
راهی برای نمایش یک رابط کاربری جایگزین (fallback UI) در حین بارگذاری کامپوننت فراهم میکند.
مرحله ۱: وارد کردن پویا (Dynamic Imports) با React.lazy
React.lazy
یک تابع را به عنوان ورودی میگیرد که import()
را فراخوانی میکند. تابع import()
یک وارد کردن پویا است که یک Promise را برمیگرداند که به یک ماژول حاوی کامپوننتی که میخواهید به صورت تنبل بارگذاری کنید، resolve میشود.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
در این مثال، MyComponent
تا زمانی که رندر نشود، بارگذاری نخواهد شد. دستور import('./MyComponent')
کامپوننت را به صورت پویا از فایل ./MyComponent
وارد میکند. توجه داشته باشید که مسیر نسبت به فایل فعلی است.
مرحله ۲: استفاده از Suspense
برای مدیریت وضعیتهای بارگذاری
از آنجایی که بارگذاری تنبل شامل بارگذاری ناهمزمان کامپوننتها است، شما به راهی برای مدیریت وضعیت بارگذاری و نمایش یک رابط کاربری جایگزین در حین دریافت کامپوننت نیاز دارید. اینجاست که Suspense
وارد عمل میشود. Suspense
یک کامپوننت React است که به شما امکان میدهد رندر فرزندانش را تا زمانی که آماده شوند، «معلق» کنید. این کامپوننت یک پراپ fallback
میگیرد که رابط کاربریای را که باید در حین بارگذاری فرزندان نمایش داده شود، مشخص میکند.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
در حال بارگذاری...
در این مثال، کامپوننت Suspense
کامپوننت MyComponent
را در بر میگیرد. در حالی که MyComponent
در حال بارگذاری است، پراپ fallback
(
) رندر خواهد شد. پس از بارگذاری MyComponent
، جایگزین رابط کاربری جایگزین خواهد شد.
مثال: بارگذاری تنبل یک مسیر در برنامه React Router
بارگذاری تنبل به ویژه برای مسیرها در یک برنامه React Router مفید است. شما میتوانید کل صفحات یا بخشهایی از برنامه خود را به صورت تنبل بارگذاری کنید و زمان بارگذاری اولیه وبسایت خود را بهبود بخشید.
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 (
در حال بارگذاری...