Skip to Content
Express and MongooseModular Node.jsSystem of Node.js Module

System of Node.js Module

📦 Node.js এর Modular System

প্রথমদিকে যখন আমরা ওয়েবসাইট তৈরি করতাম, তখন HTML দিয়ে স্ট্রাকচার, CSS দিয়ে ডিজাইন এবং JavaScript দিয়ে ইন্টার‍্যাক্টিভিটি যোগ করতাম।

JavaScript-এ কোড লেখার সময় আমরা সাধারণত var ব্যবহার করে ভেরিয়েবল ডিক্লেয়ার করতাম, যেমন:

var a = 10;

তবে var দিয়ে ডিক্লেয়ার করা ভেরিয়েবল গুলো Global Scope এ থাকত, যার মানে হলো window.a দিয়েও এক্সেস করা যেত।

এমনকি var দিয়ে ডিক্লেয়ার করা ফাংশনও window অবজেক্টের অধীনে চলে যেত:

var add = function(x, y) { return x + y; }

🧠 var এর সমস্যা ও let এর সমাধান

var ব্যবহারে স্কোপ কনফ্লিক্টের সমস্যা দেখা দেয়।

এই সমস্যার সমাধানে আসে let এবং const — যারা Block Scoped:

let a = 10; console.log(window.a); // undefined

এগুলো window অবজেক্টে যুক্ত হয় না, ফলে স্কোপ কনফ্লিক্ট কমে।


🧩 কোডকে আলাদা করা: ফাইলভিত্তিক জাভাস্ক্রিপ্ট

যখন অ্যাপ্লিকেশন বড় হতে থাকে, তখন কোডও বড় হয়। এ সময় কোডকে আলাদা আলাদা ফাইলে ভাগ করা প্রয়োজন হয়।

কিন্তু, যদি আলাদা দুই ফাইলে একই নামের ভেরিয়েবল/ফাংশন থাকে, তাহলে HTML ফাইলে স্ক্রিপ্ট ট্যাগে যুক্ত করলে নেম কনফ্লিক্ট হয়।

// file1.js let a = 10; let add = (x, y) => x + y; // file2.js let a = 20; let add = (x, y, z) => x + y + z;

এগুলো যদি একই HTML ফাইলে যুক্ত করা হয়, তাহলে সমস্যার সৃষ্টি হয়।


🛡️ সমাধান: Function Scope ব্যবহার (IIFE)

এই কনফ্লিক্ট এড়াতে, আমরা কোডকে আলাদা আলাদা ফাংশনের ভিতরে রাখতে পারি।

সবচেয়ে জনপ্রিয় প্যাটার্ন হলো IIFE (Immediately Invoked Function Expression):

(function () { let a = 10; function add(x, y) { return x + y; } })();

এইভাবে করলে:

  • প্রতিটি কোড নিজস্ব স্কোপে থাকে
  • একই নামের ভেরিয়েবল বা ফাংশন কনফ্লিক্ট করে না

🔍 দুটি আলাদা IIFE একে অপরের মধ্যে হস্তক্ষেপ করবে না কারণ তারা নিজ নিজ স্কোপে বন্দী।


⚠️ IIFE এর সীমাবদ্ধতা

যদিও IIFE আমাদের স্কোপ ইস্যু থেকে বাঁচায়, কিন্তু বড় কোডবেইসে:

  • প্রতিটি অংশকে IIFE-র ভিতরে রাখা ঝামেলার
  • কোড পড়া ও রক্ষণাবেক্ষণ কঠিন হয়ে পড়ে

🚀 সমাধান: Modular System

এই সমস্যার সমাধানে আসে Modular System

Node.js এ মূলত দুটি ধরণের মডিউল সিস্টেম রয়েছে:

  1. CommonJS (CJS) — প্রথাগত Node.js স্ট্যান্ডার্ড
  2. ESM (ECMAScript Modules) — JavaScript এর নতুন স্ট্যান্ডার্ড

🧱 Module মানে কী?

Module মানে হচ্ছে একটি নির্দিষ্ট কোডের টুকরো যা:

  • নিজস্ব স্কোপে চলে
  • বাহিরের কোনো কিছু জানে না
  • বাহিরে শুধু নির্দিষ্ট অংশ export করে

📦 Module system কোডকে টুকরো টুকরো করে reusable করে তোলে।


🔚 উপসংহার

বিষয়ব্যাখ্যা
varGlobal scope-এ accessible, কনফ্লিক্ট প্রবণ
let / constBlock scope-এ থাকে, নিরাপদ
IIFEস্কোপে বন্দী রাখে, কিন্তু বড় কোডে ঝামেলা
Modular Systemস্ট্যান্ডার্ড ও ব্যবহারযোগ্য পদ্ধতি

🚀 পরবর্তী ধাপে:

আমরা দেখবো কীভাবে CommonJS

Last updated on