React.lazy এবং Suspense দিয়ে Code Splitting

ReactJS Performance Optimization - রিয়্যাক্ট জেএস (ReactJS) - Web Development

281

ReactJS-এ Code Splitting একটি অত্যন্ত গুরুত্বপূর্ণ কৌশল, যা বড় অ্যাপ্লিকেশনগুলোর পারফরম্যান্স উন্নত করতে ব্যবহৃত হয়। এই কৌশলের মাধ্যমে অ্যাপ্লিকেশনের কোড একেবারে প্রথমে পুরোপুরি লোড না করে, প্রয়োজন অনুযায়ী ছোট ছোট ভাগে লোড করা হয়। React 16.6 থেকে React.lazy এবং Suspense হুক ব্যবহার করে Code Splitting সহজভাবে করা যায়।

Code Splitting কী?

Code Splitting হল একটি কৌশল যার মাধ্যমে অ্যাপ্লিকেশন বা ওয়েবপেজের কোডকে ছোট ছোট টুকরোতে ভাগ করা হয় এবং প্রয়োজনে সেই কোড লোড করা হয়। এর ফলে অ্যাপ্লিকেশনের প্রথম লোড সময় কমে যায় এবং ব্যবহারকারী দ্রুত অ্যাপ্লিকেশনটি ব্যবহার করতে পারে। ReactJS-এ React.lazy এবং Suspense এর সাহায্যে ডাইনামিকভাবে কম্পোনেন্ট লোড করা সম্ভব হয়, যা কোড স্প্লিটিং-এর জন্য অত্যন্ত উপকারী।


React.lazy এবং Suspense কী?

  1. React.lazy: এটি একটি React API, যা ডাইনামিকভাবে কম্পোনেন্ট লোড করতে ব্যবহৃত হয়। এটি কম্পোনেন্টের জন্য একটি পাদচরণ ফাংশন (dynamic import) ব্যবহার করে, যাতে শুধুমাত্র প্রয়োজনের সময় সেই কম্পোনেন্টটি লোড হয়।
  2. Suspense: এটি React-এর একটি বিল্ট-ইন কম্পোনেন্ট, যা লেজি লোডিং কম্পোনেন্টের জন্য "লোডিং" স্টেট পরিচালনা করে। যখন লেজি কম্পোনেন্ট লোড হয়ে না ওঠে, তখন Suspense কম্পোনেন্ট একটি ফলারব্যাক (fallback) UI দেখানোর সুযোগ দেয়।

React.lazy এবং Suspense দিয়ে Code Splitting উদাহরণ

ধরি, আমরা একটি React অ্যাপ্লিকেশন তৈরি করছি যেখানে কিছু কম্পোনেন্ট খুব বড় এবং শুধুমাত্র প্রয়োজনে তাদের লোড করতে চাই। আমরা React.lazy এবং Suspense ব্যবহার করে এই কম্পোনেন্টগুলোকে ডাইনামিকভাবে লোড করব।

১. React.lazy ব্যবহার করে কম্পোনেন্ট লোড করা

প্রথমে একটি কম্পোনেন্ট BigComponent তৈরি করি, যা বড় হতে পারে:

// BigComponent.js
import React from 'react';

const BigComponent = () => {
  return (
    <div>
      <h2>This is a big component!</h2>
      <p>It contains a lot of data and logic.</p>
    </div>
  );
};

export default BigComponent;

এখন, আমরা React.lazy ব্যবহার করে এই কম্পোনেন্টটি ডাইনামিকভাবে লোড করব:

// App.js
import React, { Suspense } from 'react';

// React.lazy দিয়ে BigComponent কে লেজি লোড করছি
const LazyBigComponent = React.lazy(() => import('./BigComponent'));

function App() {
  return (
    <div>
      <h1>Welcome to my React App!</h1>
      
      {/* Suspense দিয়ে লোডিং স্টেট হ্যান্ডেল করা */}
      <Suspense fallback={<div>Loading...</div>}>
        <LazyBigComponent />
      </Suspense>
    </div>
  );
}

export default App;

এখানে, React.lazy() ব্যবহার করে BigComponent কে লেজি লোড করা হয়েছে। যখন কম্পোনেন্টটি লোড হবে না, তখন Suspense এর fallback প্রপস থেকে "Loading..." টেক্সট প্রদর্শিত হবে।

২. ফলারব্যাক UI (Fallback UI)

ফলারব্যাক UI হল সেই UI যেটি লোডিংয়ের সময় ব্যবহারকারীর জন্য দেখানো হয়। এটি সাধারণত "Loading..." বা স্পিনার ধরনের কিছু হতে পারে।

<Suspense fallback={<div>Loading component...</div>}>
  <LazyBigComponent />
</Suspense>

এখানে, যখন BigComponent লোড হচ্ছে, তখন "Loading component..." টেক্সট ব্যবহারকারীকে দেখানো হবে। একবার কম্পোনেন্ট লোড হয়ে গেলে, এটি স্বাভাবিকভাবে রেন্ডার হবে।


Code Splitting এবং React.lazy এর সুবিধা

  1. পারফরম্যান্স উন্নয়ন: Code splitting দিয়ে, অ্যাপ্লিকেশন প্রথমে শুধু প্রয়োজনীয় কোড লোড করে, যার ফলে অ্যাপ্লিকেশনের লোড টাইম কমে যায়। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সহায়ক।
  2. ডাইনামিক লোডিং: React.lazy এবং Suspense ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের বিভিন্ন অংশ ডাইনামিকভাবে লোড করতে পারেন। এর ফলে কোডের আকার ছোট হয় এবং দ্রুত লোড হয়।
  3. মডুলার স্ট্রাকচার: Code splitting অ্যাপ্লিকেশনকে আরও মডুলার এবং স্কেলেবল করে তোলে, কারণ আপনি কোডের ছোট ছোট অংশে ভাগ করে তাদের আলাদাভাবে লোড করতে পারবেন।

আরো উন্নত Code Splitting

React.lazy এবং Suspense ব্যবহার করে আপনি কেবল কম্পোনেন্টগুলোই লোড করতে পারবেন না, পাশাপাশি আরো জটিল কনফিগারেশন যেমন API কল, ডাইনামিক রাউটিং ইত্যাদি ডাইনামিকভাবে লোড করতে পারেন। এছাড়া, React Router এবং lazy-loaded কম্পোনেন্টগুলোকে ব্যবহার করে পেজ লেভেল কোড স্প্লিটিংও করা যেতে পারে।


React.lazy এবং Suspense হুক ব্যবহার করে কোড স্প্লিটিং React অ্যাপ্লিকেশনগুলোর পারফরম্যান্স উন্নত করতে একটি শক্তিশালী উপায়। এগুলো ব্যবহারের মাধ্যমে আপনি অ্যাপ্লিকেশনের প্রথম লোড টাইম কমাতে পারেন এবং একটি স্মুথ, ফাস্ট, এবং মডুলার অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...