বাংলায় নোড জেএস (node.js basic) - পর্ব ১
প্রথম দিকের ওয়েবসাইট গুলো মূলত কতগুলো স্থির (static) ওয়েবপেজের সমন্বয় ছিল। তখন তথ্য বিনিময়-ই ছিল ওয়েবসাইটের মূল প্রয়োজন। কিন্তু ব্যবহারকারীদের সংবেদনশীলতাকে অর্থাৎ user interactivity এর উপর গুরুত্ব দিতে developed হয় ব্রাউজার স্ক্রিপ্টিং ল্যাঙ্গুয়েজ।
জাভাস্ক্রিপ্ট এ হিসেবে খুবই জনপ্রিয় এবং প্রায় প্রতিটি ব্রাউজার-ই জাভাস্ক্রিপ্ট সাপোর্ট করে। ২০০৯ সাল থেকে এর ব্যবহার ক্লাইন্ট সাইড এবং সার্ভার সাইড উভয় দিকে বিস্তৃত হয়। Ryan Dahl 2009 সালে নোড জেএস develop করেন।
নোড জেএস শেখার পূর্বে অবশ্যই জাভাস্ক্রিপ্টের ভালো জ্ঞান থাকতে হবে। জাভাস্ক্রিপ্টের কিছু মৌলিক বিষয় নিয়ে অালোচনা করা হলো -
var getTotal = funnction(args){
var result = 0;
for(var i = 0, i < args.length, i++){
result += args[i];
}
return result;
};
console.log("Output: ", getTotal([2, 2, 3]));
The output will be 7.
এই কোডটি রান করলে জাভাস্ক্রিপ্ট ইঞ্জিন- এর জন্য একটি callstack তৈরি করে এবং getTotal(); ফাংশনটিকে সেই stack এ push করে। যখন getTotal(); ফাংশনটিকে কোথাও কল করা হয়, তখন চিত্রে দেখানো ধাপগুলো অনুসরণ করে।
ফাংশনটি result ভেরিয়েবল return করলে local variable disposed হয়ে যায় এবং ফাংশনটি callstack থেকে বের হয়ে আসে।
Why does javascript create a single stack?
তার মূল কারণ হলো জাভাস্ক্রিপ্ট single threaded language অর্থাৎ একই সময়ে একটি কমান্ড-ই execute করে। জাভাস্ক্রিপ্ট এর উদ্দেশ্য ব্রাউজার গুলোতে খুবই simple functionality এবং minimal runtime যুক্ত করা।
জাভাস্ক্রিপ্টে Callback Mechanism
Callback-ই জাভাস্ক্রিপ্ট এর মূল প্রোগ্রামিং টেকনিক। এর মাধ্যমে একটি ফাংশনকে অারেকটি ফাংশনে argument হিসেবে pass করা যায়।
setTimeout(function(){
cosole.log("show me after 6sec");
}, 6000);
The output will display after 6 second.তাহলে চলুন, পূর্বের getTotal ফাংশনটি এই ফাংশনের parameter হিসেবে pass করি।
console.log("log first");
function getData(){
console.log("Output: ", ([2, 2, 3]));
}
setTimeout( getData, 6000);
console.log("log last");
code run করলে result হবে:log firstlog last
Output: 7
চিত্রে Callstack এর execution context:
Javascript এ টাস্ক কিউ (queue) প্রতিটি টাস্ক বা কল নিয়ন্ত্রণ করে। এখানে FIFO (first in first out) পদ্ধতি ব্যবহার কর হয়। অনেকটা অাগে আসলে আগে পাবেন ভিত্তিতে। একে বলা হয় asynchronous method. Eventloop(ইভেন্ট লুপ)ইভেন্টলুপ পরবর্তী টাস্ক নির্ধারণ করে, এবং ব্রাউজারের প্রতিটি টাস্কের মধ্যে সর্বাপেক্ষা অগ্রাধিকারপূর্ণ টাস্কটি প্রথমে সম্পাদনের ব্যবস্থা করে। ইভেন্টলুপ অগ্রাধিকার দেয়া ইভেন্ট বা টাস্ক এর খোঁজ করতে থাকে এবং কলস্ট্যাক এর মাধ্যমে কাজটি প্রথমে সম্পাদনা করে।Node.js (নোড জেএস)node.js javascript runtime environment যা google chrome এর V8 engine ব্যবহার করে তৈরি করা হয়েছে। node.js development এর প্রধান প্রোগ্রামার Ryan Dahl।Revisiting Eventloop using node.js Single threaded Eventloop for server Why and Where node.js is used? (নোড জেএস এর ব্যবহার কোথায় হয়।)Realtime and Multiuser Application: খুব ভালো কর্মসম্পাদন ও দ্রুতগতি সম্পন্ন হওয়ার ফলে অ্যাপ এ বহু ব্যবহারকারী একইসাথে অ্যাপ ব্যবহার করতে পারে এবং সর্বোচ্চ ব্যবহার করতে পারে।Node.js এর দ্বারা সাধারণত অনেক ভালো, দ্রুতগতি সম্পন্ন, আকার পরিবর্তনযোগ্য এবং Responsive ওয়েবসাইট বা ওয়েব service তৈরিতে ব্যবহার করা হয়। তাছাড়াও
- Delayed Job: অনেকসময় email কিংবা ডেটাবেসে ডেটা ইনপুট এর request পাঠানোর পরেও সম্পাদন করতে হয়। নোড জেএস-এ এজন্য মডিউল দেয়া থাকে।
- Web Api Services: নোড জেএস web service এর জন্য খুবই উপযোগী কারণ এক্ষেত্রে নিরবচ্ছিন্ন বা একটানা সংযোগ প্রয়োজন হয়। যেমন Games, Simulators. এক্ষেত্রে database ও ব্যবহার করা যায় তবে Json-ভিত্তিক data source তুলনামূলক ভালো।
- Proxy System: নোড জেএস প্রক্সি সিস্টেম অনেকগুলো কানেকশন একইসাথে নির্বাহ করতে পারে।
- Data Streaming
- Minimal Viable App
- Monitoring and
- Microservices
নোড জেএস এর ব্যবহার ক্ষেত্র সময়ের সাথে সাথে আরো বৃদ্ধি পাচ্ছে।এখানে প্রথম দিকে, ব্রাউজারে জাভাস্ক্রিপ্ট এর সম্পর্কে কিছু আলোচনার পর, server-side জাভাস্ক্রিপ্ট এর ফাংশনালিটি এবং প্রাথমিক আলোচনা করা হয়েছে। পরবর্তী অংশে শুরু থেকে অর্থাৎ মৌলিকভাবে একটি নোড অ্যাপ তৈরি নিয়ে আলোচনা করা হবে।
Comments