হাবলু এবং জাদুর জাভাস্ক্রিপ্ট ফাইল
একদিন বিকেলে, হাবলু তার পুরনো ল্যাপটপে পুরনো ফোল্ডার ঘাঁটাঘাঁটি করছিল। হঠাৎ সে একটা অদ্ভুত ফোল্ডার দেখতে পেল, যার নাম ছিল “Node.js: The Magic of Servers”। হাবলু তখন Node.js সম্পর্কে খুব একটা জানত না, তাই সে ফোল্ডারটি খুলে দেখতে লাগল। ফোল্ডারের ভেতরে সে একটা প্রাচীন পুঁথি (বই) পেল, যার ওপর সোনালি অক্ষরে লেখা ছিল:
“এই পুঁথি শিখলে তুমি জাভাস্ক্রিপ্টের মাধ্যমে সার্ভারের জাদুকর হয়ে উঠবে।”
হাবলু তো অবাক! সে ভাবল, “JavaScript তো আমি জানি, কিন্তু এটা কি ব্রাউজারের বাইরেও কাজ করতে পারে?”
ঠিক তখন পুঁথির ভেতরে প্রশ্নের উত্তর পাওয়া গেল:
Node.js কী?
“Node.js হলো JavaScript-এর একটি runtime environment, যা ব্রাউজারের বাইরেও কাজ করে। তুমি যখন JavaScript ব্যবহার করে কোনো ওয়েবসাইট তৈরি কর, তখন সেই কোড সাধারণত ব্রাউজারের ভেতরেই রান করে। কিন্তু Node.js দিয়ে তুমি JavaScript সার্ভার সাইডেও রান করতে পারবে, অর্থাৎ তোমার কম্পিউটারকে সার্ভার বানিয়ে তুলবে। Node.js মূলত Chrome-এর V8 ইঞ্জিন ব্যবহার করে JavaScript চালায়, এবং এটি তোমাকে একাধিক জাদুর মত কজ করতে দেবে, যেমন HTTP সার্ভার তৈরি, ডাটাবেসে সংযোগ, এবং অনেক কিছু ।”
হাবলু বিস্মিত হয়ে ভাবল, “ব্রাউজার ছাড়া কীভাবে JavaScript কাজ করে?” পুঁথির পরবর্তী অংশ তাকে আরও বিস্তারিতভাবে বুঝিয়ে দিল।
Node.js বনাম Browser
Environment:
- Browser: সাধারণত ক্লায়েন্ট-সাইড (Frontend) কাজের জন্য ব্যবহৃত হয় ।
যেখানে JavaScript ব্যবহার করে ইউজার ইন্টারফেস, ফর্ম, এবং ইভেন্ট হ্যান্ডলিং-এর মতো কাজ করা হয়। - Node.js: সার্ভার-সাইডে ব্যবহার হয়। এর মাধ্যমে সার্ভার তৈরি, ডাটাবেস ম্যানেজ করা, ফাইল সিস্টেমে কাজ ও API ডেভেলপমেন্টসহ ইত্যাদি কাজ করা যায়।
Global Objects:
- Browser: ব্রাউজারে গ্লোবাল অবজেক্ট হলো
window
, এর মধ্যে আমরাdocument
,location
, ইত্যাদি পাই। - Node.js: এখানে গ্লোবাল অবজেক্ট হলো
global
, ব্রাউজারের মতো DOM বাwindow
নেই, বরং ফাইল সিস্টেম, HTTP সার্ভার ইত্যাদি ম্যানেজ করার জন্য Object থাকে, যেমনfs
,http
ইত্যাদি।
APIs:
- Browser: ব্রাউজারে বিভিন্ন API থাকে, যেমন
fetch
(data fetch করার জন্য),localStorage
(ক্লায়েন্ট সাইডে ডাটা সংরক্ষণ করার জন্য)। - Node.js: এখানে ব্রাউজার API নেই, তবে ফাইল সিস্টেম ম্যানেজমেন্ট (উদাহরণ:
fs
মডিউল), নেটওয়ার্ক ম্যানেজমেন্ট (উদাহরণ:http
মডিউল) থাকে।
Module System:
- Browser: ব্রাউজারে
ES6
মডিউল সাপোর্ট থাকে, যেখানেimport
এবংexport
ব্যবহার করা হয়। - Node.js: By default, এতে CommonJS মডিউল সিস্টেম থাকে, যেখানে
require()
দিয়ে মডিউল ইমপোর্ট করা হয়। তবে Nodejs ভার্সন 12 এর পর থেকে ECMAScript Module Support করে।
পার্থক্য শুধু CommonJS হলো Synchronous Module System , আর ES Module Asynchronous Module System.
উদাহরণ:
- Browser:
console.log(window.location.href); // ব্রাউজারে পেজের URL দেখাবে
- Nodejs:
const fs = require('fs');
fs.readFile('test.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data); // ফাইলের কন্টেন্ট দেখাবে
});
**হাবলু সবকিছু মনোযোগ দিয়ে পড়ে মাথা চুলকাতে লাগলো, Nodejs এ Asynchronous Programming টা কি?
বিঃদ্রঃ পরের পর্বে আমরা Asynchronous Programming নিয়ে আলোচনা করবো, ইনশা-আল্লাহ।
হাবলু ভাবল, “ওয়াও! তাহলে Node.js দিয়ে আমি শুধু ওয়েবসাইট তৈরি করতে পারব না, বরং সার্ভারও তৈরি করতে পারব!”
এত সব কথা শুনে হাবলু আর দেরি করল না। সে পুঁথির প্রথম মন্ত্র খুলল, যা তাকে একটি সরল সার্ভার তৈরি করার মন্ত্র শেখাল:
javascript
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the Magic Server!\n');
});
server.listen(5000, () => {
console.log('The Magic Server is running at http://localhost:5000/');
});
হাবলু ভাবল, “এই মন্ত্রটাকে আজমাইরেই দেখি!” সে দ্রুত তার ল্যাপটপে একটি app.js
ফাইল তৈরি করল এবং কোডটি লিখে ফেলল। এরপর সে টার্মিনালে গিয়ে লিখল:
node app.js
এরপর ব্রাউজারে গিয়ে লিখল http://localhost:5000/
ঠিকানায়। এবং স্ক্রিনে ভেসে উঠল: “Welcome to the Magic Server!”
হাবলু উল্লাস করে উঠল! সে বুঝতে পারল, তার কম্পিউটারটা এখন আসলেই একটি জাদুর সার্ভারে পরিণত হয়েছে। এবং সবচেয়ে মজার বিষয় হলো, এটি JavaScript দিয়েই করা!