بڑے جاوا اسکرپٹ بنڈل آپ کی درخواست کو سست کر سکتے ہیں۔ اگر ایک ساتھ بہت زیادہ کوڈ لوڈ کیا جاتا ہے، تو صارفین کو پہلے پینٹ کے لیے زیادہ انتظار کرنا پڑے گا اور آپ کا صفحہ کم ردعمل محسوس کرے گا۔ سرچ انجن سست سائٹوں کو اپنے نتائج میں کم درجہ دے سکتے ہیں۔

سست لوڈنگ آپ کے کوڈ کو چھوٹے حصوں میں تقسیم کرکے اور ضرورت پڑنے پر صرف لوڈ کرکے اس مسئلے کو حل کرنے میں مدد کرتی ہے۔

یہ گائیڈ آپ کو React اور Next.js میں سست لوڈنگ سے گزرتا ہے۔ آخر کار، آپ کو پتہ چل جائے گا کہ اسے کب استعمال کرنا ہے۔ React.lazy، next/dynamicاور Suspenseآپ کے پاس ایک کام کرنے والی مثال ہوگی جسے آپ کاپی کر کے اپنے پراجیکٹس پر لاگو کر سکتے ہیں۔

انڈیکس

سست لوڈنگ کیا ہے؟

سست لوڈنگ ایک کارکردگی کی تکنیک ہے جو ضرورت کے وقت تک لوڈنگ کوڈ کو ملتوی کر دیتی ہے۔ پوری ایپ کو ایک ساتھ لوڈ کرنے کے بجائے، اسے چھوٹے ٹکڑوں میں تقسیم کریں۔ براؤزر صرف اس وقت ٹکڑوں کو ڈاؤن لوڈ کرتا ہے جب صارف اس راستے پر جاتا ہے یا اس خصوصیت کے ساتھ تعامل کرتا ہے۔

فوائد میں شامل ہیں:

  • تیز تر ابتدائی بوجھ: پہلا بنڈل جتنا چھوٹا ہوگا، بات چیت کا وقت اتنا ہی تیز ہوگا۔

  • بہتر بنیادی ویب وائٹلز: مواد کے ساتھ زیادہ سے زیادہ پینٹ اور کل بلاکنگ ٹائم کو بہتر بنائیں۔

  • کم بینڈوڈتھ: صارفین صرف وہی ڈاؤن لوڈ کرتے ہیں جو وہ استعمال کرتے ہیں۔

رد عمل میں، یہ متحرک بازیافت کے ذریعے حاصل کیا جاتا ہے اور React.lazy() یا Next.js next/dynamic.

شرائط

پیروی کرنے سے پہلے، آپ کو ضرورت ہو گی:

  • رد عمل کا بنیادی علم (اجزاء، ہکس، حالت)

  • Node.js انسٹال ہوا (ورژن 18 یا اس سے زیادہ تجویز کردہ)

  • React ایپ (ایک React ایپ یا Vite بنائیں) یا Next.js ایپ (Next.js مثالوں کے لیے)

React کی مثالوں کے لیے، آپ Create React ایپ یا Vite استعمال کر سکتے ہیں۔ Next.js مثالوں کے لیے، App Router (Next.js 13 یا اس سے زیادہ) استعمال کریں۔

استعمال کرنے کا طریقہ React.lazy کوڈ کی تقسیم کے لیے

React.lazy() اجزاء کو متحرک درآمدات کے طور پر بیان کیا جاسکتا ہے۔ React جزو کو صرف اس وقت لوڈ کرتا ہے جب اسے پہلی بار پیش کیا جاتا ہے۔

React.lazy() میں ایک ایسے فنکشن کی توقع کرتا ہوں جو متحرک واپس آئے۔ import(). درآمد شدہ ماڈیولز کو ڈیفالٹ ایکسپورٹ کا استعمال کرنا چاہیے۔

ایک بنیادی مثال یہ ہے:

import { lazy } from 'react';

const HeavyChart = lazy(() => import('./HeavyChart'));
const AdminDashboard = lazy(() => import('./AdminDashboard'));

function App() {
  return (
    
  );
}

اگر آپ ایک نامزد برآمد استعمال کرتے ہیں، تو آپ اسے پہلے سے طے شدہ برآمد میں نقشہ بنا سکتے ہیں۔

const ComponentWithNamedExport = lazy(() =>
  import('./MyComponent').then((module) => ({
    default: module.NamedComponent,
  }))
);

آپ براؤزر میں ڈیبگنگ کو آسان بنانے کے لیے ٹکڑوں کے نام بھی دے سکتے ہیں۔

const HeavyChart = lazy(() =>
  import(/* webpackChunkName: "heavy-chart" */ './HeavyChart')
);

React.lazy() اکیلا کافی نہیں ہے۔ آپ کو اپنے سست جزو کو اس کے ساتھ لپیٹنے کی ضرورت ہے: Suspense تو React جانتا ہے کہ لوڈ کرتے وقت کیا دکھانا ہے۔

استعمال کرنے کا طریقہ Suspense کے ساتھ React.lazy

Suspense ایک رد عمل کا جزو جو فال بیک UI دکھاتا ہے جب اس کے چائلڈ عناصر لوڈ ہوتے ہیں۔ یہ مل کر کام کرتا ہے React.lazy() متحرک طور پر درآمد شدہ اجزاء کی لوڈنگ کی حالت کو ہینڈل کرتا ہے۔

اپنے سست اجزاء کو اس کے ساتھ لپیٹیں: Suspense اور fallback سہارے:

import { lazy, Suspense } from 'react';

const HeavyChart = lazy(() => import('./HeavyChart'));
const AdminDashboard = lazy(() => import('./AdminDashboard'));

function App() {
  return (
    

Loading chart...

}> Loading dashboard...