...

Nuhil Mehdy

Polyglot Programmer, White Hat Hacker, Tech Enthusiast by Choice!

নোড.জেএস (Node.js) কি এবং কিভাবে কাজ করে

ভূমিকা

ব্যাক এন্ড ডেভেলপমেন্টে Node.js এর উপর ভিত্তি করে বেশ কিছু ওয়েব ফ্রেমওয়ার্ক এর সফল ব্যবহার, প্রায় সব রকম ইউটিলিটি টুল হিসেবে রেডিমেড প্যাকেজের সহজ লভ্যতা এবং ফ্রন্ট এন্ডে অনেক গুলো ভালো ভালো ফ্রেমওয়ার্কের সাম্প্রতিক উন্নতি বেশ ভালো মতই ব্যাকএন্ড, ফ্রন্ট এন্ড বা হাইব্রিড অ্যাপ ডেভেলপমেন্টে জাভাস্ক্রিপ্ট এর প্রভাব বুঝিয়ে দিচ্ছে। আমি এই রাস্তায় একদম নতুন। আমার মনে হয়েছে যেহেতু এই স্ট্যাকে কাজ করতে গেলে সব খানেই জাভাস্ক্রিপ্ট লাগছে তাই আসলেই জাভাস্ক্রিপ্ট কিভাবে কাজ করে, বা এই টুল গুলোর কাজ করার ধরনটাই বা কেমন সেটা জানা খুবি জরুরী। নাহলে সঠিক ভাবে টুল গুলোর ইফিসিয়েন্সি ইউটিলাইজ করা হবে না অথবা উল্টো ভুল ভাবে ব্যবহার করা হয়ে যেতে পারে। তাই আমি গত কয়েক সপ্তাহের লার্নিং রিসোর্সকে একটা জায়গায় গুছিয়ে লিখেছি।

জাভাস্ক্রিপ্ট সম্বন্ধে কিছু ভুল ধারনা

সব ওয়েব ব্রাউজারের সাথে Javascript ইন্টিগ্রেটেড অবস্থায় থাকে। তাই, আমরা কিছু ফিচার দেখতে দেখতে অভ্যস্ত যেগুলোকে Javascript এর অংশ বলে মনে হয় যেমন - DOM Tree, setTimeout ফাংশন, AJAX রিকোয়েস্ট ইত্যাদি। কিন্তু আসলে জাভাস্ক্রিপ্ট যে এনভ্যায়র্নমেন্টে রান করছে সেখান থেকেই এগুলো প্রোভাইড করা হয়। এ ক্ষেত্রে ব্রাউজার এই API গুলো প্রোভাইড করে থাকে এবং window, document বা এরকম গ্লোবাল অবজেক্ট গুলোও ব্রাউজারই ইনিসিয়ালাইজ করে থাকে। তো আমরা যদি, ব্রাউজারের ফিচার গুলো বাদ দিয়ে Javascript কে চিন্তা করি তাহলেও এই ল্যাঙ্গুয়েজটির নিচের বৈশিষ্ট্য গুলো থেকেই যায় -

  • ফার্স্ট ক্লাস সিটিজেন হিসেবে ফাংশনকে ব্যবহার করে (ফাংশনকে আর্গুমেন্ট হিসেবে পাঠানো যায়, এক ফাংশনের মধ্যে থেকে আরেকটি ফাংশনকে রিটার্নও করা যায় ইত্যাদি
  • ইভেন্ট মডেল ব্যবহার করে (এর মাধ্যমে ইভেন্ট ড্রাইভেন প্রোগ্রামিং করা যায়, পক্ষান্তরে যার সাহায্যেই কিনা asynchronous অপারেশন করা সম্ভব হয়)

Node.js কি?

অফিসিয়াল সাইটের সংজ্ঞা অনুযায়ী - “It is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient” অর্থাৎ - ক্রোমের V8 জাভাস্ক্রিপ্ট ইঞ্জিনের উপর তৈরি একটি জাভাস্ক্রিপ্ট রানটাইম যা কিনা ইভেন্ট-ড্রাইভেন ইনপুট/আউটপুট মডেল ব্যবহার করে এবং এর কারনে এটি অনেক ইফিসিয়েন্ট। উইকিপিডিয়াতে বলা - “Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript code server-side.” এটি একটি ওপেন সোর্স, ক্রস প্ল্যাটফর্ম জাভাস্ক্রিপ্ট রানটাইম এনভ্যায়র্নমেন্ট যার মাধ্যমে সার্ভার সাইডে জাভাস্ক্রিপ্ট কোড এক্সিকউট করা যায়” আমার যে সংজ্ঞাটি পছন্দ সেটা হচ্ছে - এটি একটি ওপেন সোর্স, কোর্স প্ল্যাটফর্ম, ইভেন্ট ড্রাইভেন রানটাইম এনভ্যায়র্নমেন্ট যার মাধ্যমে জাভাস্ক্রিপ্ট ব্যবহার করে এবং নন-ব্লকিং ইনপুট/আউটপুট মডেল ফলো করে সার্ভার সাইড, হাইব্রিড বা নেটওয়ার্কিং অ্যাপ্লিকেশন ডেভেলপ করা যায় :)

Read more →