ডেনো হচ্ছে জাভাস্ক্রিপ্ট ও টাইপস্ক্রিপ্টের একটি সিকিউর রানটাইম, এটি জাভাস্ক্রীপ্টের V8 ইঞ্জিন এবং Rust ল্যাঙ্গুয়েজ ব্যবহার করে তৈরি করা হয়েছে।
নোড জেএস এর অরিজিনাল ক্রিয়েটর – রায়ান ডল (Ryan Dahl) এই রানটাইমটির ক্রিয়েটর, এই প্রজেক্টির মূল উদ্দেশ্যে হচ্ছে নোড জেএসের ডিজাইন প্রবলেমগুলো ফিক্স করা। বিশেষ করে, সিকিউরিটি প্রবলেম। ডেনোকে নোডের একটি আপগ্রেড এবং সুরক্ষিত ভার্সন এই জন্যে বলা যেতে পারে।
রায়ান ডল ২০১৮ সালে একটি কনফারেন্সের মাধ্যমে নোডের বিভিন্ন বাগ (ত্রুটি) সম্পর্কে একটি প্রেজেন্টেশন দেন। এবং ঐ দিন তিনি নোড জেএস এর আপগ্রেড ভার্সন ডেনোকে সবার সামনে প্রকাশ করেন।
Sandbox
) কোড এক্সিকিউট করে, তাই পারমিশন ছাড়া ফাইল সিস্টেম, নেটওয়ার্ক এবং এনভাইরনমেন্ট (Environment
) এক্সেস করা সম্ভব হয় না। ফাইল এক্সেস করতে হলে কিছু ফ্ল্যাগ (Flag
) এর প্রয়োজন হয়। যেমনঃ – allow-net, allow-write.
ES Module
)import package from 'package'
ব্যবহার করে। আর নোডের ক্ষেত্রে আমরা const package = require("package")
এই সিন্টেক্স ব্যবহার করে থাকি। import
করা হয় ফলে আমদের যতটুকু অংশ প্রয়োজন ঠিক ততটুকু অংশ আমরা প্যাকেজ থেকে লোড করতে পারি, যা আমাদের মেমরি সেভ করে রাখে। (require
) মডিউলগুলো সিঙ্ক্রনাসলি (Synchronus
) লোড করে এবং import
মডিউলগুলো এসিঙ্ক্রনাসলি (Asynchronus
) লোড করে, এতে অ্যাপ্লিকেশনের পারফরমেন্স অনেকাংশ বেড়ে যায়।NPM
এর উপর নির্ভরশীলতা কমে যায়। এতে package.json
এর কোনো প্রয়োজন নেই এবং প্রতিটি প্যাকেজ একটি URL
থেকে লোড করা যায়।Flag
) ব্যবহার করে রিকুয়েস্ট করি।Webpack
) মতো কোনো বিল্ড টুলস ব্যবহার করার প্রয়োজন হয় না।Window, Fetch
)window
অবজেক্টে অ্যাক্সেস রয়েছে, যার অর্থ আমরা কোনো লাইব্রেরি ইনস্টল না করে fetch("https://domain.com")
একসেস করা যায় এবং এর পাশাপাশি ব্রাউজার এপিআই-তে অন্য যে কোনো ফাংশন কল করা যায়।তাছাড়া, কিছু বিল্ট-ইন উইটিলিটি রয়েছে যেমন- ডিপেনডেন্সি ইনসপেক্টর (ডেনো ইনফো) এবং কোড ফরম্যাটার (ডেনো এফএমটি)। ডেনো শুধুমাত্র সিংগেল এক্সিকিউটেবল ফাইল শিপ করে।
ডেনো ও নোড দুটি সিমিলার টুল এবং এদের উদ্দেশ্য একইরকম, তবে কাজ করার প্রক্রিয়ায় কিছু ভিন্নতা রয়েছে।
CommonJS
ব্যবহার করে। নোড জেএসে একটি প্যাকেজ ব্যবহার করতে হলে আমাদের প্রথমে NPM
থেকে এটি ইনস্টল করতে হবে:npm i moment
const moment = require("moment")
NPM
থেকে সমস্ত ডিপেন্ডেন্সি ইনস্টল করতে হবে।ES Module
ব্যবহার করে এবং ডেনো require()
সাপোর্ট করে না। ডেনোতে node module
ফোল্ডার ও NPM
এর মতো কোনো প্যাকেজ ম্যানেজারের প্রয়োজন হয় না। ডেনো সকল থার্ডপার্টি মডিউলগুলো URLs
এর মাধ্যমে ইমপোর্ট করে।const moment = require("moment")
import {moment} from "https://deno.land/x/moment/moment.ts"
package.json
) ফাইল এর প্রয়োজন হয় না। কারণ ডেনো সকল মডিউলগুলো ডাউনলোড করে, কম্পাইল এবং ক্যাশ করে রাখে।allow-net, allow-write.
অন্যদিকে নোড জেএস ফাইল ফুল এক্সেস দেয়।.js
এর পরিবর্তে .ts
লিখে সেভ করতে হয়। কিন্তু নোড জেএসে টাইপস্ক্রিপ্ট ব্যবহার করা মানে হচ্ছে একটি মাল্টি স্টেপ প্রসেস। টাইপক্রিপ্ট ইনস্টল করতে হয়, package.json
ও tsconfig.json
আপডেট করতে হয় এবং মডিউলগুলি @types
সাপোর্টেড কিনা তা নিশ্চিত করতে হয়। await
কীওয়ার্ডটি শুধুমাত্র একটি অ্যাসিঙ্ক্রোনাস ফাংশন দ্বারা অ্যাক্সেস করা যায়। কিন্তু ডেনোতে এ্যাসিঙ্ক ফাংশন ছাড়াই await
কীওয়ার্ডটি ব্যবহার করা যায়।const fakeData = async () => {const data = await fetch("https://domain.com/todos/1");const result = await data.json();};
moment} from "https://deno.land/x/moment/moment.ts"
const data = await fetch("https://domain.com/todos/1");const result = await data.json();
HTTP
রিকুয়েস্ট করতে, আমরা Fetch API
ব্যবহার করতে পারি। নোডজেএসে, আমাদের ব্রাউজার এপিআইতে অ্যাক্সেস নেই তাই আমরা নেটিভলি ফেচ ফাংশনটি কল করতে পারি না। আমাদের প্রথমে প্যাকেজটি ইনস্টল করতে হবে:npm i node-fetch
তারপর প্যাকেজটি ইমপোর্ট করতে হবে:
const fetch = require("node-fetch")
এবং তারপর আমরা ফেচ ফাংশনটি কল করতে পারব।
window
অবজেক্টে অ্যাক্সেস রয়েছে, যার অর্থ আমরা কোনো লাইব্রেরি ইনস্টল না করে fetch("https://domain.com")
কল করতে পারি পাশাপাশি ব্রাউজার এপিআই-তে অন্য যে কোনও ফাংশন কল করতে পারি। const fetch = require("node=fetch")const fakeData = async ()=> {const data = await fetch("https://domain.com/todos/1");const result = await data.json();};
const data = await fetch("https://domain.com/todos/1");const result = await data.json();
যখনই কোনো নতুন প্রোগ্রামিং ল্যাংগুয়েজ , ফ্রেমওয়ার্ক বা রানটাইম মার্কেটে আসে, সবার মনে এই প্রশ্নটি আসে এটি পুরনো প্রোগ্রামিং ল্যাংগুয়েজ , ফ্রেমওয়ার্ক বা রানটাইমগুলোর স্থান দখল করে নিবে কিনা। তেমনি ডেনো আসাতেও সবার মনে অনেক প্রশ্ন তৈরি হচ্ছে, বিশেষ করে নোড জেএস ডেভেলপারদের।
ডেনো , নোড জেএস এর অল্টারনেটিভ, এর উদ্দেশ্য নোড জেএসকে রিপ্লেস করা নয়। নোড জেএসের জনপ্রিয়তা এখন পর্যন্ত সবচেয়ে বেশি। খুবই অল্প সময়ে নোড জেএস, অনেক কোম্পানিকে এটি ব্যবহারের জন্য আকৃষ্ট করতে সক্ষম হয়েছে এবং এর ইকোসিস্টেম অনেক বিশাল হয়ে উঠেছে।
এই পর্যন্ত নোড জেএস ব্যবহার করে অসংখ্য প্রজেক্ট, ওয়েবসাইট ও প্যাকেজ ডেভেলপ করা হয়েছে। নোড জেএস হিউজ পরিমাণ কোম্পানি দ্বারা ব্যবহৃত হচ্ছে। এর মধ্যে কয়েকটি কোম্পানি হচ্ছে- Groupon, Netflix, LinkedIn, IBM, Voxer, SAP, Paypal, Walmart এবং এছাড়া আরও অনেক রয়েছে।
এখানে দেখতে পাচ্ছেন নোড জেএসের জনপ্রিয়তা কেমন! ডেভেলপারদের কাছে নোড জেএস অত্যন্ত জনপ্রিয় হওয়ার কারণ এর স্ট্যাবিলিটি এবং অসাধারণ ফিচার। অন্যদিকে, ডেনো কিছুদিন আগেই রিলিজ হয়েছে, তাই এটি খুব বেশি স্ট্যাবল না। তবে এটিকে স্ট্যাবল করতে অনেক ডেভেলপার কাজ করে যাচ্ছে এবং আশা করা যায় এটি ওয়েব ইন্ডাস্ট্রিতে অনেক ভালো কন্ট্রিবিউশন করতে পারবে।
তবে, ফিউচারে কি হয় বলা যায় না যেহেতু ডেনোর চমৎকার ফিচারগুলো ডেভেলপারদের অনেক বেশি আকৃষ্ট করছে, ফিউচারে ডেনো এই লিস্টে নোড জেএস থেকে এগিয়ে থাকতে পারে এবং এর স্থানও দখল করে নিতে পারে। যদি ডেনো নোডের স্থান দখল করে তবে হতাশ হওয়ার দরকার নেই, কারণ আপনি নোড জেএস ডেভেলপার হয়ে থাকেন এবং আপনার যদি নোড জেএসে কাজ করা অভিজ্ঞতা থাকে তবে ডেনো শেখা আপনার জন্য সহজ হবে।
এই প্রকাশনাটি পড়ে আপনার মোটামোটি ধারণা হয়ে গেছে যে ডেনোর ফিচারগুলো খুবই চমৎকার কিন্তু এটি এখনও স্ট্যাবল না কিন্তু নোড জেএস অনেক স্ট্যাবল ও পাওয়ারফুল এবং অনেক জনপ্রিয়।
তাছাড়া, আপনি যদি নোড জেএস স্কীপ করেন তবে আপনি নোড জেএস, এনপিএম এবং এর পুরো ইকোসিস্টেমের বিশ্বটি মিস করবেন। আর আপনি যদি নোড জেএসের ডাউনসাইড না জেনে থাকেন তবে আপনি ডেনোর সুবিধাগুলো কীভাবে উপভোগ করবেন?
এই লেখাটি সম্পাদনা করা হয়েছে জানুয়ারি ২৪, ২০২১ ১১:১২ পূর্বাহ্ন
প্রোগ্রামিং শুরু করার আগে একটি প্রচলিত লাইন যা প্রায় সকল বিগিনারদের শুনতে হয়- "প্রোগ্রামিং খুব…
অনেকেরই ধারণা ইন্টারনেট মানে একটি ম্যাজিকেল ক্লাউড যা আমাদের পছন্দের ওয়েবসাইট, অনলাইন শপ এবং অন্তহীন…
ওয়েবের ৭৮.৯% ওয়েবসাইটই পিএইচপি তে রান হওয়া স্বত্বেও এটি ভবিষ্যতের ইকোসিস্টেমের সাথে যাচ্ছেনা। বিশেষ করে…
আমরা প্রত্যেকেই কম বেশি বিভিন্ন প্রয়োজনে সফটওয়্যার, ওয়েবসাইট এবং ওয়েব অ্যাপ ব্যবহার করে থাকি। এসকল…
ম্যালওয়্যার! বর্তমান সময়ে আসলেই একটি ভয়ের বিষয় হয়ে দাড়িয়েছে। বড় টেক কোম্পানী থেকে ছোট পার্সোনাল…
বর্তমান সময়ে আমরা যেসব স্মার্টফোন ব্যবহার করি তার অধিকাংশই এন্ড্রয়েড অপারেটিং সিস্টেম দ্বারা পরিচালিত। কিন্তু…