تعلم كيفية تطبيق التحميل الكسول في React مع تقسيم كود المكونات لتحسين أداء التطبيق وتجربة المستخدم وأوقات التحميل الأولية بشكل كبير.
التحميل الكسول في React: تعزيز الأداء عبر تقسيم كود المكونات
في عالم تطوير الويب اليوم، يعد الأداء أمرًا بالغ الأهمية. يتوقع المستخدمون أوقات تحميل سريعة وتفاعلات سلسة. يمكن أن تؤثر حزم جافاسكريبت الكبيرة، خاصة في تطبيقات React المعقدة، بشكل كبير على أوقات التحميل الأولية وتجربة المستخدم بشكل عام. إحدى التقنيات القوية لمعالجة هذا الأمر هي التحميل الكسول (lazy loading)، وتحديدًا تقسيم كود المكونات. يقدم هذا المقال دليلاً شاملاً لفهم وتطبيق التحميل الكسول في React باستخدام React.lazy
و Suspense
.
ما هو التحميل الكسول وتقسيم الكود؟
التحميل الكسول، المعروف أيضًا بالتحميل عند الطلب، هو تقنية تؤجل تحميل الموارد (في حالتنا، مكونات React) حتى تكون هناك حاجة فعلية إليها. بدلاً من تحميل كل كود التطبيق مقدمًا، يتم تحميل الأجزاء الأساسية فقط في البداية، ويتم تحميل الكود المتبقي بشكل غير متزامن عندما ينتقل المستخدم إلى مسار معين أو يتفاعل مع مكون معين. هذا يقلل بشكل كبير من حجم الحزمة الأولية ويحسن الوقت اللازم للتفاعل (TTI).
تقسيم الكود هو عملية تقسيم كود تطبيقك إلى أجزاء أصغر وأكثر قابلية للإدارة (حزم). يمكن بعد ذلك تحميل هذه الحزم بشكل مستقل وعند الطلب. يستفيد التحميل الكسول في React من تقسيم الكود لتحميل المكونات فقط عند الحاجة إليها.
فوائد التحميل الكسول وتقسيم الكود
- تحسين وقت التحميل الأولي: من خلال تقليل حجم الحزمة الأولية، يقوم المتصفح بتنزيل وتحليل كمية أقل من جافاسكريبت مقدمًا، مما يؤدي إلى أوقات تحميل أسرع للصفحة. هذا أمر حاسم بشكل خاص للمستخدمين على اتصالات شبكة أو أجهزة أبطأ.
- تجربة مستخدم محسنة: تؤدي أوقات التحميل الأسرع إلى تجربة مستخدم أكثر استجابة ومتعة، مما يقلل من معدلات الارتداد ويزيد من تفاعل المستخدم.
- تقليل استهلاك الموارد: تحميل الكود الضروري فقط يقلل من استهلاك الذاكرة للتطبيق، وهو أمر مفيد بشكل خاص للأجهزة المحمولة.
- تحسين محركات البحث (SEO): تفضل محركات البحث المواقع ذات أوقات التحميل السريعة، مما قد يحسن ترتيب موقعك في محركات البحث.
تطبيق التحميل الكسول في React باستخدام React.lazy
و Suspense
يوفر React آلية مدمجة للتحميل الكسول للمكونات باستخدام React.lazy
و Suspense
. يسمح لك React.lazy
باستيراد مكون ديناميكيًا، بينما يوفر Suspense
طريقة لعرض واجهة مستخدم احتياطية أثناء تحميل المكون.
الخطوة 1: الاستيراد الديناميكي باستخدام React.lazy
تأخذ React.lazy
دالة تستدعي import()
. دالة import()
هي استيراد ديناميكي يعيد Promise، والذي يتحقق إلى وحدة تحتوي على المكون الذي تريد تحميله بشكل كسول.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
في هذا المثال، لا يتم تحميل MyComponent
حتى يتم عرضه. يقوم تعبير import('./MyComponent')
باستيراد المكون ديناميكيًا من ملف ./MyComponent
. لاحظ أن المسار نسبي للملف الحالي.
الخطوة 2: استخدام Suspense
للتعامل مع حالات التحميل
نظرًا لأن التحميل الكسول يتضمن تحميل المكونات بشكل غير متزامن، فأنت بحاجة إلى طريقة للتعامل مع حالة التحميل وعرض واجهة مستخدم احتياطية أثناء جلب المكون. هنا يأتي دور Suspense
. Suspense
هو مكون React يتيح لك "تعليق" عرض مكوناته الفرعية حتى تكون جاهزة. يأخذ خاصية fallback
، التي تحدد واجهة المستخدم التي سيتم عرضها أثناء تحميل المكونات الفرعية.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading...
في هذا المثال، يلتف المكون 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 (
Loading...