জাভাস্ক্রিপ্টে ক্লোজার মাধ্যমে লাইব্রেরি
জাভাস্ক্রিপ্টে প্রায়শই লাইব্রেরি তৈরি করা হয়, যা অন্যান্য প্রোগ্রামারদের ব্যবহারের জন্য ফাংশনের সংগ্রহ হিসাবে কাজ করে।
এই ধরনের লাইব্রেরিগুলি সাধারণত ক্লোজারের মাধ্যমে মডিউলে মোড়ানো হয়। এটি করা হয় যাতে লাইব্রেরি সংযুক্ত করার সময় বাহ্যিক বিশ্বে যতটা সম্ভব কম ফাংশন উপস্থিত হয়।
সাধারণত প্রতিটি লাইব্রেরি বাহ্যিক বিশ্বে শুধুমাত্র একটি ভেরিয়েবল তৈরি করার চেষ্টা করে - লাইব্রেরির ফাংশন সহ একটি অবজেক্ট। একই সময়ে, লাইব্রেরির কোডের ভিতরে কিছু ফাংশন হয় প্রধান, এবং কিছু - সহায়ক। স্পষ্টতই, আমরা বাহ্যিক বিশ্বে শুধুমাত্র প্রয়োজনীয় ফাংশনগুলি রপ্তানি করতে চাই, রপ্তানি করা অবজেক্টকে সহায়ক ফাংশন দিয়ে আবর্জনাযুক্ত না করে।
এর একটি উদাহরণ দেখা যাক। ধরা যাক আমাদের নিম্নলিখিত ফাংশন সেট আছে, যা আমরা একটি লাইব্রেরিতে পরিণত করতে চাই:
function square(num) {
return num ** 2;
}
function cube(num) {
return num ** 3;
}
function avg(arr) {
return sum(arr, 1) / arr.length;
}
function digitsSum(num) {
return sum(String(num).split(''));
}
// সহায়ক ফাংশন
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
আসুন আমাদের ফাংশনগুলি একটি মডিউল আকারে সাজাই:
;(function() {
function square(num) {
return num ** 2;
}
function cube(num) {
return num ** 3;
}
function avg(arr) {
return sum(arr, 1) / arr.length;
}
function digitsSum(num) {
return sum(String(num).split(''));
}
// সহায়ক ফাংশন
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
})();
এবং এখন সহায়ক ফাংশন ছাড়া সমস্ত ফাংশন রপ্তানি করি:
;(function() {
function square(num) {
return num ** 2;
}
function cube(num) {
return num ** 3;
}
function avg(arr) {
return sum(arr, 1) / arr.length;
}
function digitsSum(num) {
return sum(String(num).split(''));
}
// সহায়ক ফাংশন
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
window.math = {square, cube, avg, digitsSum};
})();
ধরা যাক আমাদের একটি HTML পৃষ্ঠা আছে index.html:
<html>
<head>
<script>
</script>
</head>
</html>
এটিতে আমাদের লাইব্রেরি সংযুক্ত করি:
<html>
<head>
<script src="math.js"></script>
<script>
</script>
</head>
</html>
আমাদের লাইব্রেরি থেকে ফাংশনগুলি ব্যবহার করি:
<html>
<head>
<script src="math.js"></script>
<script>
alert(math.avg([1, 2, 3]) + math.square());
</script>
</head>
</html>
নিম্নলিখিত কোড দেওয়া আছে:
function avg1(arr) {
return sum(arr, 1) / arr.length;
}
function avg2(arr) {
return sum(arr, 2) / arr.length;
}
function avg3(arr) {
return sum(arr, 3) / arr.length;
}
// সহায়ক ফাংশন
function sum(arr, pow) {
let res = 0;
for (let elem of arr) {
res += elem ** pow;
}
return res;
}
এই কোডটি একটি মডিউল আকারে সাজান। বাহিরে সহায়ক ফাংশন ছাড়া সমস্ত ফাংশন রপ্তানি করুন।
আন্ডারস্কোর লাইব্রেরিটি অধ্যয়ন করুন।
আপনার নিজের অনুরূপ লাইব্রেরি তৈরি করুন, এতে
মূল লাইব্রেরির 5-10 ফাংশন পুনরাবৃত্তি করুন।