এখন পর্যন্ত আপনি যত JavaScript প্রোগ্রাম লিখেছেন সবই ব্রাউজারের ভেতরে চলে — একটি ওয়েবপেজ সেটি লোড করে, আর ব্রাউজারের বিল্ট-ইন JavaScript ইঞ্জিন সেটি এক্সিকিউট করে। Node.js সেই একই ইঞ্জিনকে ব্রাউজার থেকে সম্পূর্ণ বের করে আনে, যাতে JavaScript সরাসরি একটি কম্পিউটারে, নিজস্ব একটি স্বতন্ত্র প্রোগ্রাম হিসেবে চলতে পারে।
প্রতিটি ব্রাউজারের ভেতরে একটি JavaScript ইঞ্জিন লুকানো থাকে — Chrome-এরটির নাম V8। V8-এর কাজ হলো JavaScript কোড পড়ে সেটিকে এমন নির্দেশনায় রূপান্তর করা যা কম্পিউটার সত্যিই চালাতে পারে। কোডটি কোথা থেকে এসেছে সেটি নিয়ে এর কোনো মাথাব্যথা নেই; এটি শুধু সেটি এক্সিকিউট করে।
Node.js সেই একই V8 ইঞ্জিনের চারপাশে তৈরি, সাথে এমন কিছু অতিরিক্ত টুল যুক্ত যা ব্রাউজার ইচ্ছাকৃতভাবে অনুমতি দেয় না: ফাইল পড়া ও লেখা, নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করা, একটি ডেটাবেসের সাথে কথা বলা। ভাষাটি একদম একই — আপনার ইতিমধ্যে জানা একই ভেরিয়েবল, ফাংশন, আর সিনট্যাক্স — শুধু এটি কী স্পর্শ করার অনুমতি পায় তা বদলায়।
দুটি পরিবেশ JavaScript-কে ভিন্ন জিনিসে প্রবেশাধিকার দেয়, কারণ তারা ভিন্ন সমস্যা সমাধান করে।
| কোথায় চলে | কী অ্যাক্সেস করতে পারে | কী অ্যাক্সেস করতে পারে না | |
|---|---|---|---|
| ব্রাউজার JavaScript | একটি ওয়েবপেজের ভেতরে | পেজের HTML/CSS (DOM), ব্রাউজার API | কম্পিউটারের ফাইল সিস্টেম, যেকোনো নেটওয়ার্ক পোর্ট |
| Node.js | সরাসরি একটি কম্পিউটারে | ফাইল, ফাইল সিস্টেম, নেটওয়ার্ক সংযোগ, এনভায়রনমেন্ট ভেরিয়েবল | কোনো DOM নেই — ম্যানিপুলেট করার মতো কোনো পেজ বা উইন্ডো নেই |
এই কারণেই একটি Node.js প্রোগ্রাম কখনো document.querySelector() কল করতে পারে না — কোনো ডকুমেন্ট নেই। আর ব্রাউজার JavaScript কখনো সরাসরি আপনার হার্ড ড্রাইভ থেকে একটি ফাইল পড়তে পারে না — একটি র্যান্ডম ওয়েবপেজকে সেটি করতে দিলে সেটি একটি গুরুতর নিরাপত্তা সমস্যা হতো।
Node.js ফাইল পড়তে পারে, নেটওয়ার্ক সংযোগ খুলতে পারে, আর একটি প্রোগ্রামকে অনির্দিষ্টকাল চালু রাখতে পারে বলে, ব্রাউজার যা পারে না ঠিক সেই কাজগুলোর জন্য এটি বেশ উপযোগী:
npm কমান্ডটি নিজেই Node.js-এ লেখা।ভাষা নয়, রানটাইম
Node.js কোনো ভাষা নয় — এটি একটি রানটাইম। ভাষাটি এখনো JavaScript-ই। Node.js হলো সেই প্রোগ্রাম যা এটিকে ব্রাউজারের বাইরে চালায়, সাথে বিল্ট-ইন অতিরিক্ত টুলগুলো যা সেটিকে কাজে লাগায়।
আপনি ইতিমধ্যে JavaScript ব্যবহার করে ভিজিটরের পাশে একটি ওয়েবপেজকে ইন্টারেক্টিভ করেছেন। Node.js হলো যা একই ভাষাকে অন্য পাশে — সার্ভারে — বসতে দেয়, একজন ভিজিটরের ব্রাউজার কিছু দেখার আগেই তাকে কী পাঠানো হবে তা ঠিক করে। এই কোর্সের বাকি অংশ এটিকে ধাপে ধাপে গড়ে তোলে: স্ক্রিপ্ট চালানো, কোডকে মডিউলে সাজানো, ফাইল পড়া, আর শেষে একটি বাস্তব সার্ভার তৈরি করা যা রিকোয়েস্টের জবাব দেয়।