Injected Properties এবং Singleton Services

Web Development - এমবারজেএস (EmberJS) - Ember.js Services
170

Ember.js একটি শক্তিশালী ফ্রেমওয়ার্ক যা ডেভেলপারদের বড় এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সহায়ক। এর মধ্যে Injected Properties এবং Singleton Services দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা অ্যাপ্লিকেশন স্থিতিশীলতা, কার্যকারিতা এবং পুনঃব্যবহারযোগ্যতার জন্য অত্যন্ত গুরুত্বপূর্ণ।

এই দুটি বৈশিষ্ট্যকে ব্যাখ্যা করতে চলুন:


Injected Properties

Injected Properties হল সেই প্রপার্টি যা একটি কম্পোনেন্ট, কন্ট্রোলার বা রাউটে অন্য একটি সার্ভিস বা কন্ট্রোলার থেকে ডিপেন্ডেন্সি ইনজেকশন (Dependency Injection) হিসেবে আনা হয়। এটি services বা অন্যান্য আবশ্যক ডেটাকে অ্যাপ্লিকেশন কোডে সহজেই প্রবাহিত করার একটি উপায়।

Ember.js-এ injection ব্যবহৃত হয় যখন একটি ক্লাস (যেমন কম্পোনেন্ট বা কন্ট্রোলার) অন্য কোনো ক্লাসের ডেটা বা কার্যকলাপের উপর নির্ভরশীল থাকে। ইনজেকশন প্রপার্টি সাধারণত @service ডেকোরেটর ব্যবহার করে ইনজেক্ট করা হয়।

Injected Properties উদাহরণ

  1. Service তৈরি করা

এখানে একটি user-authentication সার্ভিস তৈরি করা হয়েছে যা অ্যাপ্লিকেশনের লগইন স্টেট পরিচালনা করে:

// app/services/user-authentication.js
import Service from '@ember/service';

export default class UserAuthenticationService extends Service {
  isAuthenticated = false;

  login() {
    this.isAuthenticated = true;
  }

  logout() {
    this.isAuthenticated = false;
  }
}
  1. Service Inject করা

এখন, এই সার্ভিসটি একটি component বা controller-এ ইনজেক্ট করা হবে:

// app/components/login-button.js
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';

export default class LoginButtonComponent extends Component {
  @service userAuthentication;

  get loginStatus() {
    return this.userAuthentication.isAuthenticated ? 'Logged in' : 'Logged out';
  }

  login() {
    this.userAuthentication.login();
  }

  logout() {
    this.userAuthentication.logout();
  }
}

এখানে, @service ডেকোরেটরটি ব্যবহার করা হয়েছে, যা userAuthentication সার্ভিসকে এই কম্পোনেন্টে ইনজেক্ট করেছে। এর ফলে, login এবং logout মেথডগুলো এই সার্ভিস ব্যবহার করতে সক্ষম হয়েছে।

  1. টেমপ্লেটের মাধ্যমে ব্যবহার
<!-- app/templates/components/login-button.hbs -->
<button {{on "click" this.login}}>Login</button>
<button {{on "click" this.logout}}>Logout</button>
<p>Status: {{this.loginStatus}}</p>

এই টেমপ্লেটটি ব্যবহারকারীকে লগইন এবং লগআউট করার জন্য বাটন প্রদর্শন করে, এবং লগইন স্ট্যাটাস দেখায়।


Singleton Services

Singleton Services হল এমন একটি সার্ভিস যা অ্যাপ্লিকেশনে একক এক্সেমপ্লার (instance) তৈরি করে এবং সার্ভিসটি পুরো অ্যাপ্লিকেশন জুড়ে ব্যবহৃত হয়। এই সার্ভিসটি অ্যাপ্লিকেশন চলাকালীন একটিই থাকে, এবং এটি নির্দিষ্ট অবস্থা বা ডেটা এক্সেস করতে ব্যবহৃত হয়।

Ember.js-এর services সাধারণত singleton হিসেবে কাজ করে। এর মানে হল যে, একবার একটি সার্ভিস ইনজেক্ট করলে, তা অ্যাপ্লিকেশনের সমস্ত অংশের মধ্যে পুনঃব্যবহারযোগ্য হয়ে ওঠে।

Singleton Service উদাহরণ

  1. Singleton Service তৈরি করা
// app/services/logger.js
import Service from '@ember/service';

export default class LoggerService extends Service {
  log(message) {
    console.log(message);
  }
}

এটি একটি খুব সাধারণ logger সার্ভিস, যা অ্যাপ্লিকেশনের যেকোনো অংশে লগ বার্তা পাঠাতে ব্যবহৃত হবে।

  1. Singleton Service Inject করা

এখন, এই logger সার্ভিসটি অন্যান্য কম্পোনেন্ট বা কন্ট্রোলারগুলিতে ইনজেক্ট করা যাবে:

// app/components/app-header.js
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';

export default class AppHeaderComponent extends Component {
  @service logger;

  constructor() {
    super(...arguments);
    this.logger.log('AppHeader component initialized');
  }
}

এখানে, logger সার্ভিসটি ইনজেক্ট করা হয়েছে এবং এটি কম্পোনেন্টের constructor মেথডে ব্যবহৃত হয়েছে।

  1. টেমপ্লেটের মাধ্যমে ব্যবহৃত না হলেও সার্ভিসের কার্যকলাপ
<!-- app/templates/components/app-header.hbs -->
<h1>Welcome to the App</h1>

এখানে, টেমপ্লেটটি শুধুমাত্র একটি সাধারণ শিরোনাম প্রদর্শন করবে, তবে লগিং কার্যকলাপের জন্য logger সার্ভিসটি পেছনে কাজ করছে।


Ember.js Services এবং Injected Properties এর সুবিধা

  1. Code Reusability: একটি service একবার তৈরি করলে, এটি অ্যাপ্লিকেশনের যেকোনো অংশে পুনঃব্যবহার করা যায়।
  2. Data Sharing: একাধিক কম্পোনেন্ট বা কন্ট্রোলারগুলির মধ্যে ডেটা শেয়ার করতে injected properties ব্যবহার করা যেতে পারে। এতে ডেটা একসাথে সিঙ্ক্রোনাইজ করা সহজ হয়।
  3. Centralized State Management: services অ্যাপ্লিকেশনের কেন্দ্রীয় অবস্থান বা স্টেট পরিচালনা করতে ব্যবহৃত হয়, যেমন ব্যবহারকারী অথেন্টিকেশন, লগিং, অথবা অ্যাপ্লিকেশন কনফিগারেশন।
  4. Singleton Pattern: services সাধারণত singleton প্যাটার্নে কাজ করে, যার ফলে সার্ভিসের একক এক্সেমপ্লার অ্যাপ্লিকেশন জুড়ে একযোগে ব্যবহৃত হয়।

Injected Properties এবং Singleton Services Ember.js অ্যাপ্লিকেশন ডেভেলপমেন্টে অত্যন্ত গুরুত্বপূর্ণ। Injected Properties দিয়ে সার্ভিস বা অন্যান্য ডেটা কম্পোনেন্টে ইনজেক্ট করা যায়, যা ডেটা শেয়ার এবং ব্যবহার করতে সহায়ক। অন্যদিকে, Singleton Services অ্যাপ্লিকেশন জুড়ে একক এক্সেমপ্লার হিসেবে ব্যবহৃত হয় এবং একাধিক কম্পোনেন্ট বা কন্ট্রোলারের মধ্যে স্থিতিশীল ডেটা শেয়ার করে। এই দুটি বৈশিষ্ট্য কোডের পুনঃব্যবহারযোগ্যতা, সহজ ডেটা ম্যানেজমেন্ট এবং কার্যকরী অ্যাপ্লিকেশন নির্মাণের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...