Aurelia একটি মডুলার ফ্রেমওয়ার্ক, যেখানে আপনি কোডকে ছোট ছোট অংশে ভাগ করে সহজে মডিউল হিসেবে ব্যবহার করতে পারেন। একটি মডিউল হল এমন একটি ইউনিট যা বিভিন্ন ফিচার বা কার্যকলাপ (ফাংশন, ক্লাস, সার্ভিস) ধারণ করে এবং সেগুলো অন্য জায়গায় ব্যবহৃত হতে পারে। Aurelia মডিউল সিস্টেম JavaScript এর ES6 Modules সিস্টেম অনুসরণ করে।
এখানে, আমরা দেখবো কিভাবে একটি মডিউল তৈরি করা যায় এবং অন্যান্য মডিউলে এটি কিভাবে ইমপোর্ট করা যায়।
১. মডিউল তৈরি করা
একটি মডিউল তৈরি করার জন্য, প্রথমে একটি ক্লাস বা ফাংশন তৈরি করতে হবে এবং তারপর সেটি অন্য মডিউলে ব্যবহারযোগ্য করতে হবে।
উদাহরণ: একটি সহজ মডিউল তৈরি করা
ধরা যাক, আমরা একটি সার্ভিস মডিউল তৈরি করছি যেটি একটি গ্রীটিং মেসেজ ফেরত দিবে।
- GreetingService.js (মডিউল ফাইল)
export class GreetingService {
getGreeting() {
return "Hello from GreetingService!";
}
}
এখানে, GreetingService একটি ক্লাস যা getGreeting() ফাংশন ধারণ করে। এই ক্লাসটি export করা হয়েছে যাতে এটি অন্যান্য ফাইল থেকে ব্যবহৃত হতে পারে।
২. মডিউল ইমপোর্ট করা
মডিউল তৈরি করার পর, এটিকে অন্যান্য ফাইল বা কম্পোনেন্টে import করা যায়। import করা মানে হলো, ওই মডিউলের ক্লাস, ফাংশন বা ভ্যালু অন্য ফাইলে ব্যবহার করার সুযোগ পাওয়া।
উদাহরণ: GreetingService মডিউল ইমপোর্ট করা
ধরা যাক, আপনি app.js ফাইলে GreetingService মডিউলটি ব্যবহার করতে চান।
- app.js (মডিউল ইমপোর্ট)
import { GreetingService } from './greetingService'; // মডিউল ইমপোর্ট
export class App {
constructor() {
this.greetingService = new GreetingService(); // GreetingService ইনস্ট্যান্স তৈরি
}
activate() {
console.log(this.greetingService.getGreeting()); // গ্রীটিং মেসেজ দেখানো
}
}
এখানে, GreetingService মডিউলটি import করা হয়েছে এবং App ক্লাসের মধ্যে এটি ব্যবহার করা হয়েছে। যখন অ্যাপ্লিকেশন রান করবে, তখন getGreeting() ফাংশনটি কল হবে এবং মেসেজটি কনসোলে প্রদর্শিত হবে।
৩. Aurelia কম্পোনেন্টে মডিউল ব্যবহার করা
Aurelia কম্পোনেন্ট (যেমন app.html এবং app.js) এ মডিউল ইমপোর্ট এবং ব্যবহার করা খুব সহজ।
উদাহরণ: GreetingService কম্পোনেন্টে ইমপোর্ট করা
- app.html (কম্পোনেন্টের HTML টেমপ্লেট)
<template>
<h1>${greetingMessage}</h1> <!-- গ্রীটিং মেসেজ দেখানো -->
<button click.delegate="getGreeting()">Click me for greeting</button>
</template>
- app.js (কম্পোনেন্টের জাভাস্ক্রিপ্ট ফাইল)
import { GreetingService } from './greetingService'; // মডিউল ইমপোর্ট
export class App {
constructor(greetingService) {
this.greetingService = greetingService;
this.greetingMessage = ''; // গ্রীটিং মেসেজের জন্য ভেরিয়েবল
}
getGreeting() {
this.greetingMessage = this.greetingService.getGreeting(); // গ্রীটিং মেসেজ সেট করা
}
}
এখানে GreetingService মডিউলটি ইমপোর্ট করা হয়েছে এবং getGreeting() ফাংশনটি একটি বাটনে ক্লিক করার মাধ্যমে কল করা হবে। এটি একটি গ্রীটিং মেসেজ প্রদর্শন করবে।
৪. Dependency Injection (DI) এর মাধ্যমে মডিউল ইনজেকশন
Aurelia একটি শক্তিশালী Dependency Injection (DI) সিস্টেম ব্যবহার করে। DI এর মাধ্যমে আপনি সার্ভিস বা মডিউলগুলোকে ক্লাসে ইনজেক্ট করতে পারেন, যাতে কোড আরও মডুলার এবং টেস্টেবল হয়।
উদাহরণ: DI ব্যবহার করে মডিউল ইনজেকশন
- greetingService.js (সার্ভিস মডিউল)
export class GreetingService {
getGreeting() {
return "Hello from GreetingService using DI!";
}
}
- app.js (DI এর মাধ্যমে মডিউল ইনজেকশন)
import { inject } from 'aurelia-framework';
import { GreetingService } from './greetingService';
@inject(GreetingService) // DI কনটেইনার থেকে GreetingService ইনজেক্ট করা হচ্ছে
export class App {
constructor(greetingService) {
this.greetingService = greetingService; // GreetingService ইনজেক্ট করা
this.greetingMessage = ''; // গ্রীটিং মেসেজ
}
activate() {
console.log(this.greetingService.getGreeting()); // গ্রীটিং মেসেজ দেখানো
}
}
এখানে, @inject(GreetingService) ডেকোরেটর ব্যবহার করে GreetingService DI কনটেইনারে রেজিস্টার করা হচ্ছে এবং এটি App ক্লাসে ইনজেক্ট করা হচ্ছে।
৫. মডিউল এবং কনটেইনার ব্যবহার
Aurelia কনটেইনারে মডিউল রেজিস্টার করা এবং ডিপেনডেন্সি ইনজেকশন দিয়ে সেগুলোকে রিজলভ (resolve) করা যায়। এটি ব্যবহারের জন্য, আপনাকে মডিউলকে register করতে হবে এবং তারপর কনটেইনার থেকে রিজলভ করতে হবে।
উদাহরণ: কনটেইনার থেকে মডিউল রিজলভ করা
import { Container } from 'aurelia-framework';
import { GreetingService } from './greetingService';
const container = new Container();
container.registerSingleton(GreetingService); // সিঙ্গেলটন হিসেবে রেজিস্টার করা
const greetingService = container.get(GreetingService); // কনটেইনার থেকে রিজলভ করা
console.log(greetingService.getGreeting());
উপসংহার
Aurelia-তে মডিউল তৈরি এবং ইমপোর্ট করা খুবই সহজ এবং কার্যকরী। ES6 Module সিস্টেমের উপর ভিত্তি করে আপনি মডিউলগুলি তৈরি করতে পারেন এবং পরে অন্য কোথাও সেগুলো ব্যবহার করতে পারেন। Dependency Injection (DI) ব্যবহারের মাধ্যমে, আপনি মডিউলগুলিকে ক্লাসে ইনজেক্ট করতে পারবেন, যা কোডকে আরও মডুলার এবং টেস্টেবল করে তোলে।
Read more