ReactNext
React-documentationBasics-1

1.12 Rendering tree

Welcome to React Next Documentation Bangla

রেন্ডার ট্রি (Render Tree) এবং মডিউল ট্রি (Module Tree) – সহজভাবে বোঝা

১. রেন্ডার ট্রি (Render Tree) কী?

ধরো, তুমি একটা ছবি আঁকছো যেখানে প্রত্যেকটি অংশ আলাদা আলাদা জিনিসের প্রতিনিধিত্ব করে—গাছ, আকাশ, পাখি। এখন, এই প্রতিটি উপাদানকে ঠিকঠাক জায়গায় বসানোর একটা পদ্ধতি দরকার, তাই না? রেন্ডার ট্রি ঠিক এমনটাই করে। এটি হচ্ছে HTML (DOM) এবং CSS এর সমন্বিত একটা কাঠামো যেখানে প্রতিটি এলিমেন্ট সাজানো থাকে। এটা সেই মডেল, যা ব্রাউজার দেখে ঠিক করে কিভাবে পুরো পেজটি দেখাবে।

রিয়াক্টে, তুমি যখন JSX দিয়ে কম্পোনেন্ট লিখো, তখন সেটা শেষে HTML এর মতো হয়ে যায়। রিয়াক্ট তারপর এর ভার্চুয়াল DOM ব্যবহার করে এই পরিবর্তনগুলো দ্রুত এবং কার্যকরভাবে করে ফেলে।

রেন্ডার ট্রি কিভাবে কাজ করে?

চল, একটু গভীরে যাই। এটি তিনটা ধাপের মধ্যে কাজ করে:

  1. DOM এবং CSSOM তৈরি: প্রথমে ব্রাউজার HTML পড়ে একটা DOM তৈরি করে। তারপর CSS পড়ে CSSOM তৈরি হয়। সহজ করে বললে, DOM হলো তোমার HTML ফাইলের গঠন, আর CSSOM হলো CSS এর গঠন।
  2. রেন্ডার ট্রি নির্মাণ: এরপর এই DOM এবং CSSOM মিলে একটা রেন্ডার ট্রি তৈরি হয়। এটা হলো সেই কাঠামো যা ব্রাউজারকে বলে দেয় কিভাবে UI টা দেখতে হবে।
  3. লেআউট এবং পেইন্টিং: এরপর ব্রাউজার প্রতিটি এলিমেন্টকে সঠিক জায়গায় বসায় (এটা হচ্ছে লেআউট) এবং তারপর সেই এলিমেন্টগুলোকে পেইন্ট করে বা স্ক্রিনে তুলে ধরে।

রেন্ডার ট্রির প্রয়োজনীয়তা ও সুবিধা

রেন্ডার ট্রি কেন দরকার? কারণ, এটি ব্রাউজারকে বলে দেয় কিভাবে একটা পেজ দেখা উচিত। আর বড় সুবিধা হচ্ছে, যখন DOM এর কোনো অংশ পরিবর্তিত হয়, তখন ব্রাউজার শুধুমাত্র সেই অংশটুকুই পুনরায় রেন্ডার করে, ফলে পেজ দ্রুত লোড হয় এবং পারফরম্যান্স বেড়ে যায়।

রিয়াক্টে এই রেন্ডার ট্রির সাথে ভার্চুয়াল DOM কাজ করে, এবং শুধু পরিবর্তিত অংশ আপডেট করে। এতে অনেক সময় বাঁচে এবং অ্যাপ্লিকেশন ফাস্ট হয়।

উদাহরণ:

function App() {
  return (
    <div>
      <h1>React Render Tree Example</h1>
      <p>This is a paragraph.</p>
    </div>
  );
}

এখানে div, h1 এবং p মিলে একটা রেন্ডার ট্রি তৈরি করবে। যদি শুধু p ট্যাগের কনটেন্ট পরিবর্তন হয়, রিয়াক্ট শুধু সেই অংশটুকু পুনরায় রেন্ডার করবে। বাকি সব ঠিক আগের মতো থাকবে।

২. মডিউল ট্রি (Module Tree) কী?

এখন ধরো, তুমি একটা বাড়ি তৈরি করছো যেখানে প্রত্যেকটি ঘর আলাদা আলাদা কাজের জন্য। একটা মডিউল ঠিক তেমনই — প্রতিটি মডিউল একটা কাজের জন্য তৈরি। মডিউল ট্রি হলো তোমার অ্যাপ্লিকেশনের সব জাভাস্ক্রিপ্ট মডিউলগুলোর সম্পর্ক। মানে কোন মডিউলটা কোনটার উপর নির্ভর করছে, সেটা দেখায়।

মডিউল ট্রি কিভাবে কাজ করে?

রিয়াক্টে আমরা সাধারণত বিভিন্ন ফাইল বা মডিউল ব্যবহার করি। এখন এগুলো একে অপরের উপর নির্ভরশীল হয়। যেমন Webpack এর মতো মডিউল বান্ডলার এই মডিউলগুলোর মধ্যে একটা ট্রি স্ট্রাকচার তৈরি করে যেখানে প্রতিটি মডিউল একে অপরের সাথে যুক্ত থাকে।

উদাহরণ:

ধরি, তোমার তিনটা ফাইল আছে: App.js, Header.js, এবং Footer.jsApp.js তে তুমি Header.js এবং Footer.js কে ইম্পোর্ট করছো।

// App.js
import Header from "./Header";
import Footer from "./Footer";
 
function App() {
  return (
    <>
      <Header />
      <Footer />
    </>
  );
}
 
export default App;

এখন, এই মডিউলগুলো একটা ট্রি স্ট্রাকচারে সাজানো থাকবে:

App.js
  ├── Header.js
  └── Footer.js

মডিউল ট্রির প্রয়োজনীয়তা ও সুবিধা

মডিউল ট্রি তোমাকে বুঝতে সাহায্য করে কোন মডিউল কোনটার উপর নির্ভর করে। এতে কোডকে ছোট ছোট অংশে ভাগ করা সহজ হয়, ফলে অ্যাপ্লিকেশন মেনটেইন করা অনেক সহজ হয়ে যায়। আবার এটা কোডকে পুনরায় ব্যবহারযোগ্যও করে তোলে। এছাড়া, মডিউলগুলোকে ভালোমতো বুঝতে পারলে অপ্রয়োজনীয় মডিউল বাদ দেওয়া যায়, ফলে অ্যাপ্লিকেশন হালকা হয়।

রেন্ডার ট্রি এবং মডিউল ট্রি একসাথে কিভাবে কাজ করে?

রিয়াক্ট অ্যাপ্লিকেশন যখন ব্রাউজারে রান করে, তখন মডিউল ট্রি মডিউলগুলোকে লোড করে, আর রেন্ডার ট্রি সেই মডিউলগুলো থেকে UI তৈরি করে। সহজ ভাষায়, মডিউল ট্রি অ্যাপের কাঠামো, আর রেন্ডার ট্রি UI এর দৃশ্যমান অবস্থা।


ইলাস্ট্রেশন:

  • রেন্ডার ট্রি: ধরো একটা গাছের মতো যার শীর্ষে div, আর নিচে তার child elements (যেমন h1, p ইত্যাদি)।
  • মডিউল ট্রি: আবার মডিউল ট্রি হলো ডিপেনডেন্সির মতো—App.js এর নিচে Header.js এবং Footer.js আছে, যেগুলো একে অপরের সাথে যুক্ত।

সংক্ষেপে:

  • রেন্ডার ট্রি হলো UI কে ব্রাউজারে দেখানোর জন্য DOM এবং CSSOM এর সম্মিলিত অবস্থা।
  • মডিউল ট্রি হলো অ্যাপ্লিকেশনের মডিউলগুলোর মধ্যে সম্পর্ক, যা কোন মডিউল কোনটার উপর নির্ভর করছে তা বোঝায়।

এখন এই ধারণা গুলো তোমার কাছে আরো পরিষ্কার, তাই না?

On this page