আগের পাঠে require() আর module.exports ব্যবহার হয়েছে — CommonJS। Node ES Modules-ও সাপোর্ট করে, import/export সিনট্যাক্স যা আপনি হয়তো ব্রাউজার JavaScript লেখা থেকে ইতিমধ্যে চেনেন। এগুলো ভিন্ন সিনট্যাক্সে একই কাজ করে, আর একটি প্রোজেক্ট কোনটি ব্যবহার করছে তা Node-কে বলে দিতে হয়।
ডিফল্টভাবে, Node প্রতিটি .js ফাইলকে CommonJS হিসেবে গণ্য করে। এর বদলে import/export ব্যবহার করতে, package.json-এ এটি যোগ করুন:
{
"type": "module"
}(package.json পরের পাঠে ভালোভাবে কভার করা হয়েছে — আপাতত, এটুকু জানাই যথেষ্ট যে এই একটি ফিল্ড পুরো প্রোজেক্টের মডিউল স্টাইল পাল্টে দেয়।)
// math.js
export function add(a, b) {
return a + b
}
export function multiply(a, b) {
return a * b
}// app.js
import { add, multiply } from './math.js'
console.log(add(2, 3))CommonJS থেকে একটি বাস্তব পার্থক্য: ES Module ইম্পোর্টে .jsসহ পুরো ফাইলনেম লাগে। CommonJS-এর অভ্যাস থেকে এটি বাদ দেওয়া, স্যুইচ করার সময় সবচেয়ে সাধারণ ভুল।
ব্রাউজার JavaScript-এর মতোই, একটি ফাইলে যেকোনো সংখ্যক নামযুক্ত এক্সপোর্টের পাশাপাশি একটি default এক্সপোর্ট থাকতে পারে:
// greet.js
export default function greet(name) {
return `Hello, ${name}!`
}
// app.js — ডিফল্ট ইম্পোর্টে কোনো curly braces নেই
import greet from './greet.js'
console.log(greet('Priya'))| CommonJS | ES Modules | |
|---|---|---|
| সিনট্যাক্স | require() / module.exports | import / export |
| ফাইল এক্সটেনশন লাগে? | না | হ্যাঁ, সবসময় |
| কোথায় সাধারণ | পুরোনো Node প্রোজেক্ট, কিছু npm প্যাকেজ | নতুন প্রোজেক্ট, ব্রাউজার JS সিনট্যাক্সের সাথে মেলে |
এই কোর্স কোনটি ব্যবহার করে
একদম নতুন একটি প্রোজেক্টের জন্য, ES Modules বেশি ধারাবাহিক পছন্দ — এটি আপনি ব্রাউজারে ইতিমধ্যে ব্যবহার করা একই সিনট্যাক্স। তবুও আপনি CommonJS-এর মুখোমুখি হতেই থাকবেন, কারণ বিদ্যমান বিপুল সংখ্যক npm প্যাকেজ এটি দিয়ে লেখা। এই কোর্সের বাকি অংশ CommonJS ব্যবহার করে, কারণ এটি শূন্য কনফিগারেশনে কাজ করে আর টিউটোরিয়াল আর বিদ্যমান কোডে আপনি এটিই সবচেয়ে বেশি দেখবেন।