Skip to Content
Express and MongooseModular Node.jsCommonJS ModuleCommonJS & Local Module

CommonJS & Local Module

এই ভিডিওতে আমরা CommonJS এবং Local Module নিয়ে বিস্তারিত জানবো। Node.js-এ মূলত ৩ ধরনের মডিউল আছে:

  1. Local Module — নিজের তৈরি
  2. Built-in Module — Node.js এর নিজস্ব
  3. Third-party Module — অন্যদের তৈরি, npm থেকে নেওয়া

🛠️ Local Module তৈরি

একটা ফাইল থেকে কোড export করে অন্য ফাইলে require এর মাধ্যমে import করলে সেটা একটা Module হয়ে যায়।

উদাহরণ:

🔹 File Structure:

Learning-Node/ ├── file1.js └── file2.js

🔸 file2.js

const a = 10; module.exports = a;

এখানে আমরা a নামের একটা ভেরিয়েবল ডিক্লেয়ার করেছি এবং module.exports দিয়ে এক্সপোর্ট করেছি।


🔸 file1.js

const var_1 = require('./file2'); console.log(var_1); // 10

আমরা file2.js কে require('./file2') দিয়ে ইমপোর্ট করছি এবং সেটা var_1 ভেরিয়েবলে রেখে কনসোলে প্রিন্ট করছি।


⚠️ যদি Export না করি?

যদি আমরা file2.js থেকে কিছু export না করি, তাহলে require করলে আমরা empty object {} পাব:

// file2.js const a = 10; // No module.exports // file1.js const var_1 = require('./file2'); console.log(var_1); // {}

🔍 module এর ভেতরে কী থাকে?

আমরা চাইলেই console.log(module) করে দেখে নিতে পারি module object-এর মধ্যে কি কি আছে।

console.log(module);

🧾 Output:

Module { id: '.', path: '/Users/your-username/Desktop/Learning-Node', exports: {}, filename: '/Users/your-username/Desktop/Learning-Node/file2.js', loaded: false, children: [], paths: [ '/Users/your-username/Desktop/Learning-Node/node_modules', '/Users/your-username/Desktop/node_modules', '/Users/your-username/node_modules', '/Users/node_modules', '/node_modules' ] }

🧠 ব্যাখ্যা:

প্রপার্টিমানে কি
idমডিউলের আইডি, . মানে এটা main/root module
pathযেখান থেকে module লোড হয়েছে
exportsযেটা অন্য ফাইল থেকে পাবে (যদি কিছু export করা হয়)
filenameপূর্ণ ফাইল পাথ
loadedমডিউল লোড হয়েছে কিনা (false মানে এখনো সম্পূর্ণ execute হয়নি)
childrenঅন্য মডিউল গুলো যেগুলো require করা হয়েছে
pathsকোন কোন জায়গা থেকে require() খুঁজে দেখবে

এখানে কিছু গুরুত্বপূর্ণ প্রপার্টি থাকবে:

  • id: মডিউলের ইউনিক আইডি
  • path: ফাইলের লোকেশন
  • exports: যেটা এক্সপোর্ট করা হয়েছে
  • filename, loaded, children, ইত্যাদি…

🧠 উপসংহার

বিষয়ব্যাখ্যা
Local Moduleনিজে বানানো মডিউল
module.exportsঅন্য ফাইলের জন্য ডেটা এক্সপোর্ট করা
require()অন্য ফাইল থেকে ডেটা ইমপোর্ট করা
Default returnকিছু না export করলে empty object রিটার্ন করে

🚀 পরবর্তী ধাপে আমরা শিখবো Built-in module এবং Third-party module ব্যবহারের পদ্ধতি।

আমরা মডুলার সিস্টেমকে ডিপ ডাইভ করে বোঝার চেষ্টা করবো।

📁 মডিউল ফাইল তৈরি

আগের ভিডিওতে আমরা file2.js নামে একটি ফাইল তৈরি করেছিলাম, যেখানে:

  • একটি add ফাংশন ছিল
  • দুটি ভেরিয়েবল ছিল: a এবং b
  • আরেকটি ভেরিয়েবল ছিল
  • এবং ফাইলটি মডুলার করা হয়েছিল

এরপর আমরা আরেকটি ফাইল তৈরি করলাম file3.js, যেখানে:

  • আবার একটি add ফাংশন থাকবে
  • b ভেরিয়েবলটিও রাখা হবে

এভাবে আমরা file3.js-কেও মডিউল হিসেবে গঠন করলাম।


🧠 Alias ব্যবহার: নাম কনফ্লিক্ট সমাধান

file1.js এ আমরা const এবং destructuring করে কাজ করেছিলাম।

ধরুন, আমরা a ভেরিয়েবলটিকে নতুন নামে নিতে চাই, তখন alias ব্যবহার করা হয়।

উদাহরণ:

const { add: a3 } = require('./file3');

এখানে add ফাংশনকে a3 নামে নিচ্ছি কারণ এটা file3 থেকে আসছে।

🔹 এখন যদি আমরা 2 + 3 করি, ফলাফল হবে 5


🧹 কোড পরিষ্কার ও alias প্রয়োজনীয়তা

  • আমরা dot notation বা destructuring উভয়ভাবেই কোড পরিষ্কার রাখতে পারি।
  • যখন ফাংশন বা ভেরিয়েবলগুলোর নাম একই হয়ে যায়, তখন alias ব্যবহার করতে হয় যাতে কনফ্লিক্ট না হয়।
  • বিশেষ করে third-party packages বা external modules ব্যবহারের সময় alias দরকার হয়।

📦 index.js ফাইলের ভূমিকা

আমরা index.js নামে একটি ফাইল নিচ্ছি।

কিন্তু কেন?

আমাদের মূল main.js ফাইলে যদি একাধিক ফাংশন রিকোয়্যার করতে হয়, তাহলে প্রতিটি utility ফাইল থেকে আলাদাভাবে import করা ঝামেলার — যেমন:

const add = require('./utils/add'); const subtract = require('./utils/subtract');

এর পরিবর্তে আমরা index.js ফাইলে সব ফাংশন একত্রে export করবো:

// utils/index.js const add = require('./add'); const subtract = require('./subtract'); module.exports = { add, subtract };

এখন main.js ফাইল থেকে সহজে রিকোয়্যার করা যাবে:

const { add, subtract } = require('./utils');

⚠️ index.js না থাকলে কী হয়?

যদি কোনো ফোল্ডার রিকোয়্যার করা হয় কিন্তু index.js না থাকে:

const { add } = require('./utils');

তাহলে Node.js error দিবে কারণ সে জানে না কোন ফাইলটা এক্সপোর্ট করবে।

উদাহরণ:

  • index.js → ❌ index1.js নাম দিলে
  • রান করার সময় → ❌ Error

Node.js ফোল্ডার থেকে রিকোয়্যার করার সময় default ভাবে index.js খুঁজে


✅ Smart Modular Pattern

আমরা এখন একটা স্মার্ট কাজ করলাম:

  • index.js ফাইলে সব utility function একত্রে import এবং export করলাম।
  • এখন এক লাইনে সব ফাংশন access করা সম্ভব হলো।
const { add, subtract, multiply } = require('./utils')

✨ সুবিধাসমূহ:

  • ✅ কোড পরিষ্কার হলো
  • ✅ import গুলো সুন্দরভাবে organize হলো
  • ✅ এক লাইনে সব ফাংশন access করা গেল
  • ✅ কোড এখন বেশি maintainable
Last updated on