Node js কি?

Mohiuddin Mazumder
3 min readJun 11, 2021

Node js এর ডকুমেন্টেশনে দেখা যায়- Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.

এখন প্রশ্ন জাগে runtime, V8 ইঞ্জিন, Javascript ইঞ্জিন এসব কি?

যখন এই টপিকগুলো ক্লিয়ার হয়ে যাবে তখন Node js কি তা নিয়ে আর কনফিউশান থাকবে না।

Runtime, V8 engine, Javascript engine এই জিনিসগুলোর পরিষ্কার ধারণার জন্য আমাদের জানা প্রয়োজন- একটা ওয়েব পেজ কিভাবে কাজ করে, ব্রাউজার কিভাবে একটা ওয়েব পেজকে রান করে আমাদের সামনে আউটপুট দেখায়।

একটা ওয়েবপেজ এর গঠন দেয়া হয় Html এর মাধ্যমে, আর css এর মাধ্যমে ডিজাইন করা হয়। Html, css আর কিছুই করতে পারে না। যখনই একটা ওয়েবপেজ এর ইন্টারএক্টিভিটি যোগ করতে হয় তখনই প্রয়োজন হয় javascript এর।

আর javascript এর দেয়া নির্দেশনা ব্রাউজার এ রান করানোর জন্য ব্রাউজার ঐ কোড রিড করে কমান্ড ফলো করতে হয়।

ব্রাউজার javascript এর কোডকে রিড করার জন্য ব্রাউজারের মধ্যে একটা javascript ইঞ্জিন সেট করা থাকে।

আমরা যখন বাউজারকে প্রোগ্রামিং ল্যাঙ্গুয়েজের একটা ফাইল দিই তখন ব্রাউজার সেই ফাইল এর কন্টেন্টগুলা নিয়ে সেগুলোকে মেশিন ল্যাঙ্গুয়েজে রূপান্তর করে দেয়। মেশিন কোডে রূপান্তরের পর ব্রাউজার তার কাজ বুজতে পারে এবং আমাদের আউটপুট দেখায়। আর মেশিন কোডে রূপান্তরের কাজটি করে ব্রাউজারের javascript ইঞ্জিন।

ব্রাউজার যখন একটা javascript ফাইল পায় এবং ওই ফাইল এর কন্টেন্টগুলো কে এক্সিকিউট করে আউটপুট দেখায়। এই আউটপুট দেখানোর প্রসেসটাই হচ্ছে Runtime।

এই runtime কাজ করার জন্য ব্রাউজারের যে window অবজেক্ট আছে তার এক্সেস পেতে হয়, এবং যে ওয়েবপেজের মধ্যে ইন্টাএক্টিভিটি এড করতে হবে তার DOM এর এক্সেস পেতে হয়। DOM মানে Document object model। যা পুরো ওয়েব পেইজটাকেই রিপ্রেজেন্ট করে। DOM এর এক্সেস যখন পাওয়া যায় তখন DOM কে মানিপুলেট করা মানে পুরো ওয়েবপেজটাকেই মানিপুলেট করা। তখন ইচ্ছামতো যেকোনো কিছু পরিবর্তন করা সম্ভব। তাই javascript ইঞ্জিনের DOM, Window এসবের এক্সেস প্রয়োজন। যখন একটা Javascript ফাইলকে ব্রাউজারে রান করা হয় তখন সে javascript ইঞ্জিনের মাধ্যমে dom, window এগুলোর এক্সেস পেয়ে যায়।

এখন বিভিন্ন ব্রাউজারের জন্য বিভিন্ন ইঞ্জিন রয়েছে যেমন- Chrome এর জন্য V8 ইঞ্জিন, Firefox এর জন্য SpiderMonkey, Internet explorer এর ক্ষেত্রে সেটা Chakra, Sapare তে সেটা JavaScriptCore ইত্যাদি।

এদের মধ্যে সবচেয়ে হাই পারপরমেন্ট হচ্ছে Chrome এর V8 ইঞ্জিন।

এতক্ষনতো javascript engine, v8 engine, runtime এসব নিয়ে কথা হলো।

এবার দেখা যাক Node js কি?

Node js হচ্ছে javascript এর একটা runtime। Node js কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ নয়। Node js এর ক্রিয়েটর Ryan Dahl Chrome এর V8 ইঞ্জিনকে ব্রাউজার থেকে বের করে এনে এর সাথে নিজের কিছু মসলা মাখিয়ে তৈরী করলেন Node js।

তিনি ভাবলেন, আমি যদি V8 ইঞ্জিনকে chrome থেকে বের করে এনে অন্য কোথাও ব্যবহার করতে পারি তবেতো শুধু Dom context এ পরে থাকতে হচ্ছে না। আমি অন্য কোথাও একে নিয়ে আমার মতো context তৈরী করে সেই অনুযায়ী ইমপ্লিমেন্ট করতে পারব।

এই ধারনা থেকে তিনি v8 ইঞ্জিনকে বের করে এনে নিজের কোড ইমপ্লিমেন্ট করে একটা নতুন প্রজেক্ট বানিয়ে ফেললেন। তিনি এই নিজের কোড বেসে পারমিশন নিলেন operating system, File system, network, Memory এরকম সিস্টেম রিসোর্স এর এক্সেস নিতে পারেন। যেটা ব্রাউজারে করা যেতো না। আর এর নাম দিলেন Node js।

এক্ষেত্রে context হলো পুরো operating system যর কাছে সব কিছুর ই এক্সেস আছে। মানে একটা সার্ভারে যখন Node js রান করে তখন সে ওই সার্ভারের সব কিছুরই এক্সেস পায়। যেহেতু এটা operating system এ রান করতে পারে সেহেতু এটা সার্ভারেও রান করতে পারে।

সুতরাং দেখা যাচ্ছে, Node js আর কিছুই না, এটা হচ্ছে javascript এর একটা রানটাইম।

এই node js এর জন্যই javascript সার্ভারেও রান করতে পারে। Node js আসার আগে javascript কে শুধু ক্লায়েন্ট সাইটের কিছু ইন্টারেক্টিভিটির জন্য ব্যবহার করা হতো। কিন্তু Node js আসার পর থেকেই javascript এর পাওয়ার অনেক বেড়ে যায়। Javascript কে এখন ক্লায়েন্ট সাইট সার্ভার সাইট দুই জায়গায় ই রান করানো যায়।

--

--