KnockoutJS এর বেসিক ধারণা

নকআউটজেএস (KnockoutJS) - Web Development

328

KnockoutJS একটি শক্তিশালী এবং সহজে ব্যবহৃত JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) আর্কিটেকচারে কাজ করে। এটি বিশেষভাবে two-way data binding এবং dependency tracking এর জন্য পরিচিত, যা ডেভেলপারদের রিয়েল-টাইম, ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। KnockoutJS এর মাধ্যমে, আপনি ডেটা এবং UI এর মধ্যে সম্পর্ক স্থাপন করতে পারেন, যা স্বয়ংক্রিয়ভাবে ডেটা পরিবর্তন হলে UI-কে আপডেট করে এবং UI থেকে ডেটা পরিবর্তন হলে তা মডেলেও প্রতিফলিত হয়।

KnockoutJS এর বেসিক ধারণা:

KnockoutJS সাধারণত declarative bindings, two-way data binding, observable objects, এবং computed properties ব্যবহার করে ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।

1. Two-Way Data Binding:

KnockoutJS এর two-way data binding এর মানে হল যে UI-এ কোনো পরিবর্তন হলে তা মডেলেও প্রতিফলিত হবে এবং মডেল থেকে পরিবর্তন হলে তা UI-এ আপডেট হবে।

এটা সম্ভব হয় KnockoutJS এর observables এর মাধ্যমে, যা একটি ডেটার পরিবর্তন ট্র্যাক করে এবং UI-এ তা স্বয়ংক্রিয়ভাবে আপডেট হয়।

উদাহরণ:

<!-- HTML code -->
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
<p>Hello, <span data-bind="text: name"></span>!</p>
// KnockoutJS code
var viewModel = {
    name: ko.observable('John Doe')
};
ko.applyBindings(viewModel);

এখানে:

  • data-bind="value: name" এর মাধ্যমে name observable এর মান ইনপুট ফিল্ডের সাথে বাইন্ডিং করা হয়েছে।
  • data-bind="text: name" এর মাধ্যমে name observable এর মান <span> ট্যাগে প্রদর্শিত হচ্ছে।

এখন, আপনি ইনপুট ফিল্ডে যেকোনো পরিবর্তন করলে তা স্বয়ংক্রিয়ভাবে name observable-এ প্রতিফলিত হবে এবং একইভাবে <span> ট্যাগেও সেই পরিবর্তন দেখা যাবে।

2. Observables:

Observables হল KnockoutJS এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটার পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়। যখন একটি observable এর মান পরিবর্তিত হয়, তখন UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।

উদাহরণ:

var observableValue = ko.observable('Hello, World!');
console.log(observableValue());  // Output: 'Hello, World!'

// Change the observable value
observableValue('KnockoutJS is awesome!');
console.log(observableValue());  // Output: 'KnockoutJS is awesome!'

এখানে:

  • ko.observable() এর মাধ্যমে একটি পরিবর্তনযোগ্য মান তৈরি করা হয়েছে।
  • observableValue() এর মাধ্যমে ঐ মানটি এক্সেস করা হয়েছে এবং observableValue('new value') এর মাধ্যমে মান পরিবর্তন করা হয়েছে।

3. Computed Observables:

Computed observables হল এমন একটি observable যা অন্যান্য observables এর মানের উপর নির্ভরশীল। যখন নির্ভরশীল observables এর মান পরিবর্তিত হয়, তখন computed observable স্বয়ংক্রিয়ভাবে আপডেট হয়।

উদাহরণ:

var firstName = ko.observable('John');
var lastName = ko.observable('Doe');

var fullName = ko.computed(function() {
    return firstName() + ' ' + lastName();
});

console.log(fullName());  // Output: 'John Doe'

firstName('Jane');
console.log(fullName());  // Output: 'Jane Doe'

এখানে:

  • ko.computed() এর মাধ্যমে দুটি observable (firstName এবং lastName) এর মানের উপর ভিত্তি করে fullName তৈরি করা হয়েছে।
  • যখন firstName পরিবর্তিত হয়, তখন fullName স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।

4. Declarative Bindings:

KnockoutJS এ declarative bindings ব্যবহৃত হয়, যার মাধ্যমে আপনি HTML ট্যাগের মধ্যে data-bind অ্যাট্রিবিউট ব্যবহার করে ডেটা এবং UI এর মধ্যে সম্পর্ক স্থাপন করেন। এইভাবে, কোডের মধ্যে সরাসরি ডেটা এবং ভিউ এর সম্পর্ক নিশ্চিত করা যায়।

উদাহরণ:

<button data-bind="click: changeText">Click me</button>
<p data-bind="text: message"></p>
var viewModel = {
    message: ko.observable('Hello, World!'),
    changeText: function() {
        this.message('KnockoutJS is great!');
    }
};

ko.applyBindings(viewModel);

এখানে:

  • data-bind="click: changeText" এর মাধ্যমে একটি click event বাইন্ড করা হয়েছে যা message observable এর মান পরিবর্তন করবে।
  • data-bind="text: message" এর মাধ্যমে message এর মান UI-তে প্রদর্শিত হবে।

5. Applying Bindings:

ko.applyBindings() হল KnockoutJS এর একটি ফাংশন যা আপনার ViewModel এবং HTML এর মধ্যে বাইন্ডিং করে।

উদাহরণ:

var viewModel = {
    name: ko.observable('John Doe')
};
ko.applyBindings(viewModel);

এখানে, ko.applyBindings() ফাংশনটি viewModel কে HTML এর সাথে বাইন্ড করে, যাতে HTML তে যেকোনো ডেটা পরিবর্তন করলে তা ViewModel এ প্রতিফলিত হয় এবং vice versa।

6. Templating:

KnockoutJS তে templating এর মাধ্যমে ডাইনামিকভাবে HTML জেনারেট করা যায়। এটি খুবই কার্যকরী যখন আপনাকে একটি লিস্ট বা ডেটা স্যুট একাধিক উপাদানে রেন্ডার করতে হয়।

উদাহরণ:

<ul data-bind="foreach: items">
    <li data-bind="text: name"></li>
</ul>
var viewModel = {
    items: ko.observableArray([
        { name: 'Item 1' },
        { name: 'Item 2' },
        { name: 'Item 3' }
    ])
};

ko.applyBindings(viewModel);

এখানে, foreach বাইন্ডিং ব্যবহার করে items অ্যারে থেকে প্রতিটি আইটেম লুপের মাধ্যমে <li> তে রেন্ডার করা হচ্ছে।


KnockoutJS এর সুবিধা:

  1. Declarative Syntax: KnockoutJS এ ডেটা-বাইন্ডিং এবং UI আপডেট declaratively করা যায়, যা কোডকে পরিষ্কার এবং সহজ রাখে।
  2. Two-Way Data Binding: ডেটা এবং UI এর মধ্যে দুই-মুখী সম্পর্ক তৈরি করা সম্ভব, যা UI তে কোন পরিবর্তন হলেই ডেটা আপডেট হয় এবং ডেটার পরিবর্তন UI তে দেখায়।
  3. Small Footprint: এটি একটি লাইটওয়েট লাইব্রেরি, যা দ্রুত কাজ করে এবং কম রিসোর্স ব্যবহার করে।
  4. Easy to Integrate: KnockoutJS সহজে অন্যান্য লাইব্রেরি বা ফ্রেমওয়ার্কের সাথে ইন্টিগ্রেট করা যায়।
  5. Supports Complex UI: KnockoutJS দিয়ে জটিল ডাইনামিক ইউজার ইন্টারফেস তৈরি করা যায়, যেমন ড্র্যাগ-এন্ড-ড্রপ, টেবিলের রিয়েল-টাইম আপডেট, ফর্ম ডেটা ম্যানিপুলেশন ইত্যাদি।

সারাংশ:

KnockoutJS একটি শক্তিশালী এবং সহজে ব্যবহৃত JavaScript লাইব্রেরি যা MVVM আর্কিটেকচারে কাজ করে এবং দুই-মুখী ডেটা বাইন্ডিং (two-way data binding) এর মাধ্যমে আপনার ইউজার ইন্টারফেসের ডেটা মডেল এবং ভিউকে সিঙ্ক্রোনাইজ করে। এটি Observables, Computed Observables, এবং Declarative Bindings ব্যবহার করে ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।

KnockoutJS ডেভেলপারদের জন্য একটি কার্যকরী টুল, বিশেষ করে যারা rich, dynamic ইউআই তৈরি করতে চান, যেখানে ইউজারের ইনপুট এবং ডেটা মডেলের মধ্যে স্বয়ংক্রিয়ভাবে পরিবর্তন হতে পারে।

Content added By

Observables: কী এবং কেন ব্যবহার করা হয়

285

KnockoutJS-এ Observables একটি গুরুত্বপূর্ণ কনসেপ্ট, যা data-binding এবং dependency tracking এর জন্য ব্যবহৃত হয়। Observables এর মাধ্যমে আপনি ডেটাকে ট্র্যাক করতে পারেন এবং UI-এ ডেটার পরিবর্তন স্বয়ংক্রিয়ভাবে রিফ্লেক্ট করতে পারেন। KnockoutJS তে Observables ব্যবহারের মাধ্যমে আপনি two-way data binding সুবিধা পেতে পারেন, যেখানে UI এবং মডেল ডেটার মধ্যে পরিবর্তন স্বয়ংক্রিয়ভাবে একে অপরকে আপডেট করে।

Observables: কী এবং কেন ব্যবহার করা হয়?

1. Observables কী?

Observables হল একটি বিশেষ ডেটা টাইপ যা KnockoutJS-এ ব্যবহার করা হয়। এটি মূলত একটি getter এবং setter হিসাবে কাজ করে। যখন কোনো ডেটার মান পরিবর্তিত হয়, তখন UI স্বয়ংক্রিয়ভাবে সেই পরিবর্তন প্রতিফলিত করে।

এটি KnockoutJS এর data-binding সিস্টেমের একটি গুরুত্বপূর্ণ অংশ। Observables হল এমন একটি ভ্যারিয়েবল, যা পরিবর্তন হলে UI-এ সেটা রিফ্লেক্ট করে, এমনকি যখন ভিউ বা ডাটাবেসের অন্যান্য অংশে ডেটা চেঞ্জ হয়।

2. Observables কিভাবে কাজ করে?

  • Getter: যখন আপনি একটি observable-এর মান চান, তখন এটি আপনি ব্যবহার করতে পারবেন যেমন সাধারণ কোনো ভ্যারিয়েবল।
  • Setter: যখন আপনি একটি observable-এ নতুন মান সেট করবেন, তখন UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যাবে।

KnockoutJS-এ observable তৈরি করতে আপনি ko.observable() ব্যবহার করেন।

3. কেন Observables ব্যবহার করা হয়?

  1. Two-Way Data Binding:
    • Observables এর মাধ্যমে আপনি two-way data binding সুবিধা পেতে পারেন। যখন আপনি UI-এ ইনপুট পরিবর্তন করেন, তখন সেটি observable-এ আপডেট হয় এবং বিপরীতভাবে, যখন observable-এর মান পরিবর্তিত হয়, তখন UI স্বয়ংক্রিয়ভাবে আপডেট হয়।
  2. Dependency Tracking:
    • Observables এর মাধ্যমে ডেটার মধ্যে সম্পর্ক ট্র্যাক করা যায়। যখন একাধিক observables একে অপরের উপর নির্ভরশীল থাকে, তখন তাদের পরিবর্তনগুলি UI তে দ্রুত প্রতিফলিত হয়।
  3. Automatic UI Updates:
    • Observables ব্যবহার করার মাধ্যমে আপনি UI-এ ম্যানুয়ালি কোন পরিবর্তন করতে হবে না। UI স্বয়ংক্রিয়ভাবে observable পরিবর্তন অনুযায়ী আপডেট হয়ে যায়।

4. KnockoutJS তে Observables এর ব্যবহার:

Basic Observable Example:

// Creating an observable
var name = ko.observable('John');

// Getting the value of the observable
console.log(name());  // Output: John

// Setting a new value to the observable
name('Jane');

// Getting the updated value of the observable
console.log(name());  // Output: Jane

এখানে:

  • ko.observable() একটি observable তৈরি করে।
  • name() ফাংশন ব্যবহার করে আমরা observable এর মান পেতে পারি।
  • name('Jane') ফাংশন ব্যবহার করে observable এর মান সেট করা হয়।

5. Using Observables with DOM (UI) Elements:

KnockoutJS তে observable এর মান ব্যবহার করে আপনি UI এর বিভিন্ন অংশের সাথে ডেটা বাইন্ডিং করতে পারেন।

Example (HTML with KnockoutJS):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>KnockoutJS Observable Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>
    <div>
        <input type="text" data-bind="value: name, valueUpdate: 'input'" />
        <p>Hello, <span data-bind="text: name"></span>!</p>
    </div>

    <script>
        // ViewModel with an observable
        var viewModel = {
            name: ko.observable('John')
        };

        // Apply bindings
        ko.applyBindings(viewModel);
    </script>
</body>
</html>

এখানে:

  • data-bind="value: name": ইনপুট ফিল্ডে name observable এর মান দেখাচ্ছে। যখন আপনি ইনপুট পরিবর্তন করবেন, তখন name এর মান পরিবর্তিত হবে।
  • data-bind="text: name": এই স্প্যান ট্যাগে name observable এর মান প্রদর্শিত হবে। যখন আপনি ইনপুট ফিল্ডে নাম পরিবর্তন করবেন, তখন এখানে সেই পরিবর্তন প্রতিফলিত হবে।

6. Computed Observables:

KnockoutJS তে computed observables ব্যবহার করে আপনি একাধিক observables এর উপর নির্ভরশীল নতুন মান তৈরি করতে পারেন। এটি সাধারণত getter হিসেবে কাজ করে, যা অন্যান্য observables এর মানের উপর ভিত্তি করে নতুন ডেটা তৈরি করে।

Example:

var firstName = ko.observable('John');
var lastName = ko.observable('Doe');

// Creating a computed observable
var fullName = ko.computed(function() {
    return firstName() + ' ' + lastName();
});

console.log(fullName());  // Output: John Doe

// Changing the first name
firstName('Jane');
console.log(fullName());  // Output: Jane Doe

এখানে:

  • ko.computed() একটি computed observable তৈরি করে, যা firstName এবং lastName এর মানের উপর ভিত্তি করে fullName তৈরি করে।

7. Why Use Observables in KnockoutJS?

  1. Automatic UI Updates: Observables স্বয়ংক্রিয়ভাবে UI আপডেট করতে সাহায্য করে। যখন একটি observable পরিবর্তিত হয়, UI তে সেই পরিবর্তন প্রতিফলিত হয়।
  2. Simplified Data Management: ডেটা এবং UI এর মধ্যে সিঙ্ক্রোনাইজেশন সহজ এবং কার্যকরী হয়।
  3. Modular Code: Observables এবং computed observables ব্যবহারের মাধ্যমে আপনি কোডকে মডুলার এবং পরিষ্কার রাখতে পারেন।
  4. Dependency Tracking: আপনি সহজেই কোন observable অন্য observables এর উপর নির্ভরশীল তা ট্র্যাক করতে পারেন এবং সেই অনুযায়ী UI আপডেট হয়।

সারাংশ:

  • Observables হল KnockoutJS এর একটি শক্তিশালী ফিচার, যা data-binding এবং dependency tracking এর মাধ্যমে UI এবং মডেলের মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করে।
  • Observables ব্যবহারের মাধ্যমে আপনি two-way data binding সুবিধা পেতে পারেন, যেখানে UI এবং মডেল উভয়েই একে অপরকে আপডেট করে।
  • Computed Observables এর মাধ্যমে আপনি অন্যান্য observables এর মানের উপর নির্ভরশীল নতুন মান তৈরি করতে পারেন।
  • KnockoutJS তে observables ব্যবহারের মাধ্যমে আপনি ডাইনামিক এবং রিয়েল-টাইম ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যা ইউজারের অভিজ্ঞতা আরও উন্নত করে।
Content added By

Observables এবং Data Binding

263

KnockoutJS হল একটি JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) আর্কিটেকচারের উপর ভিত্তি করে কাজ করে এবং two-way data binding (দ্বিমুখী ডেটা বাইন্ডিং) এর সুবিধা দেয়। এর মধ্যে, Observables এবং Data Binding হলো প্রধান দুটি কনসেপ্ট যা KnockoutJS এর কার্যকারিতা চালিত করে।

1. Observables: কী এবং কেন ব্যবহার করা হয়?

Observables হল KnockoutJS এর মূল বৈশিষ্ট্য যা ডেটার পরিবর্তন ট্র্যাক করে এবং সেই পরিবর্তনগুলো UI তে স্বয়ংক্রিয়ভাবে রিফ্লেক্ট করে। যখন একটি observable এর মান পরিবর্তিত হয়, তখন তা সংশ্লিষ্ট UI অংশকে আপডেট করে, যা data binding এর মাধ্যমে সম্ভব হয়।

Observables কী?

An observable একটি বিশেষ ডেটা টাইপ যা একটি মান ধারণ করে, এবং সেই মানের পরিবর্তন ট্র্যাক করে। যখন observable এর মান পরিবর্তিত হয়, তখন UI এ সেই পরিবর্তনটি প্রতিফলিত হয়।

KnockoutJS এ observables ডেটা মডেলকে view (UI) এর সাথে যুক্ত করে এবং ডেটা পরিবর্তন হলে UI তে অটোমেটিক্যালি পরিবর্তন ঘটে।

Observables ব্যবহার করা কেন প্রয়োজন?
  • Automatic UI Updates: যখন কোনো observable এর মান পরিবর্তিত হয়, তখন স্বয়ংক্রিয়ভাবে UI-তে পরিবর্তন হয়, ফলে ডেভেলপারকে ম্যানুয়ালি UI আপডেট করার প্রয়োজন নেই।
  • Simplified State Management: Observables ব্যবহার করে আপনি যেকোনো ডেটা ফিল্ডের পরিবর্তন সহজে ট্র্যাক করতে পারেন, এবং পরিবর্তনের ভিত্তিতে UI আপডেট করতে পারেন।
  • Real-Time Interactivity: যখন ইউজার কোনো ইনপুট দেয়, তখন তা UI তে রিয়েল-টাইমে পরিবর্তন হতে থাকে, কারণ observables UI এবং মডেল উভয়ের মধ্যে সিঙ্ক্রোনাইজেশন বজায় রাখে।
Observable এর উদাহরণ:
// A simple observable
var name = ko.observable('John Doe');

// Getting the value of the observable
console.log(name()); // Output: John Doe

// Setting a new value to the observable
name('Jane Doe');
console.log(name()); // Output: Jane Doe

এখানে:

  • ko.observable('John Doe'): এটি একটি observable তৈরি করেছে যার মান প্রথমে 'John Doe'
  • name(): observable এর মানটি পেতে ব্যবহার করা হয়।
  • name('Jane Doe'): observable এর মান পরিবর্তন করা হয়েছে, যা UI তে প্রতিফলিত হবে (যদি UI তে এই observable ব্যবহার করা হয়)।
Computed Observables:

KnockoutJS তে computed observables এমন observables যা অন্য observables এর মানের উপর ভিত্তি করে তৈরি হয়। যখন তার নির্ভরশীল observables পরিবর্তিত হয়, তখন computed observable এর মানও আপডেট হয়।

Example:

var firstName = ko.observable('John');
var lastName = ko.observable('Doe');

// Create a computed observable
var fullName = ko.computed(function() {
    return firstName() + ' ' + lastName();
});

console.log(fullName()); // Output: John Doe
firstName('Jane');
console.log(fullName()); // Output: Jane Doe

এখানে:

  • fullName একটি computed observable, যা firstName এবং lastName এর মানের উপর নির্ভরশীল।
  • যখন firstName পরিবর্তিত হয়, তখন fullName স্বয়ংক্রিয়ভাবে আপডেট হয়।

2. Data Binding in KnockoutJS

Data Binding হল এমন একটি প্রক্রিয়া যা ডেটা মডেল এবং UI (view) এর মধ্যে সম্পর্ক স্থাপন করে। KnockoutJS তে, ডেটা বাইন্ডিং একটি declarative (বিবৃতিগত) উপায়ে করা হয়, যেখানে আপনি HTML ট্যাগে সরাসরি data-bind অ্যাট্রিবিউট ব্যবহার করে ডেটা মডেলকে UI তে বাইন্ড করেন।

Types of Data Binding in KnockoutJS:

KnockoutJS তে বেশ কয়েকটি ধরনের data binding রয়েছে, যার মধ্যে কিছু গুরুত্বপূর্ণ হচ্ছে:

  1. Text Binding:

    • text বাইন্ডিং দিয়ে আপনি observable বা computed observable এর মান HTML element এর মধ্যে প্রদর্শন করতে পারেন।

    Example:

    <span data-bind="text: name"></span>
    
    var name = ko.observable('John Doe');
    ko.applyBindings({ name: name });
    

    এখানে, text বাইন্ডিং ব্যবহার করে name এর মান span ট্যাগে দেখানো হচ্ছে।

  2. Value Binding:

    • value বাইন্ডিং ব্যবহার করে আপনি ইনপুট ফিল্ডে observable এর মান সেট করতে পারেন এবং ইনপুটের মান পরিবর্তন হলে observable এর মান আপডেট হবে (two-way data binding)।

    Example:

    <input type="text" data-bind="value: name" />
    <p data-bind="text: name"></p>
    
    var name = ko.observable('John Doe');
    ko.applyBindings({ name: name });
    

    এখানে, ইনপুট ফিল্ডের মান observable name এর সাথে বাইন্ড করা হয়েছে। যখন আপনি ইনপুট পরিবর্তন করবেন, name এর মানও পরিবর্তিত হবে এবং এটি স্বয়ংক্রিয়ভাবে প্যারাগ্রাফে প্রতিফলিত হবে।

  3. Click Binding:

    • click বাইন্ডিং দিয়ে আপনি কোনো ইভেন্ট (যেমন, ক্লিক) হ্যান্ডেল করতে পারেন।

    Example:

    <button data-bind="click: changeName">Change Name</button>
    <p data-bind="text: name"></p>
    
    var name = ko.observable('John Doe');
    var viewModel = {
        name: name,
        changeName: function() {
            name('Jane Doe');
        }
    };
    ko.applyBindings(viewModel);
    

    এখানে, click বাইন্ডিং ব্যবহার করে একটি বাটনে ক্লিক করার মাধ্যমে name এর মান পরিবর্তন করা হচ্ছে এবং প্যারাগ্রাফে সেটি দেখানো হচ্ছে।

  4. Visible/Hidden Binding:

    • visible এবং hidden বাইন্ডিং ব্যবহার করে আপনি DOM উপাদানকে দৃশ্যমান বা লুকানো করতে পারেন নির্দিষ্ট শর্তের উপর ভিত্তি করে।

    Example:

    <div data-bind="visible: isVisible">This content is visible</div>
    
    var isVisible = ko.observable(true);
    ko.applyBindings({ isVisible: isVisible });
    

    এখানে, visible বাইন্ডিং ব্যবহার করা হয়েছে যাতে DOM উপাদানটি observable এর মানের উপর ভিত্তি করে দৃশ্যমান বা অদৃশ্য হয়ে থাকে।


সারাংশ:

  1. Observables:
    • Observables হল KnockoutJS এর প্রধান বৈশিষ্ট্য, যা ডেটার পরিবর্তন ট্র্যাক করে এবং সেই পরিবর্তন UI তে স্বয়ংক্রিয়ভাবে প্রতিফলিত হয়।
    • Computed Observables ব্যবহার করে আপনি ডেটার উপর নির্ভরশীল নতুন মান তৈরি করতে পারেন।
  2. Data Binding:
    • KnockoutJS তে data binding ডিক্লেয়ারেটিভভাবে (HTML এ data-bind অ্যাট্রিবিউট ব্যবহার করে) করা হয়।
    • text, value, click, visible, hidden ইত্যাদি বাইন্ডিং ব্যবহার করে ডেটা মডেল এবং UI এর মধ্যে সম্পর্ক স্থাপন করা হয়।

KnockoutJS এর observables এবং data binding এর মাধ্যমে আপনি সহজেই রিয়েল-টাইম এবং ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন, যা ইউজারের ইনপুট এবং ডেটার মধ্যে স্বয়ংক্রিয়ভাবে পরিবর্তন ঘটায়।

Content added By

Observable Arrays ব্যবহার করা

262

KnockoutJS তে Observable Arrays একটি শক্তিশালী ফিচার, যা ডেটার তালিকা (অথবা অ্যারে) এবং UI এর মধ্যে two-way data binding করতে সাহায্য করে। এটি আপনাকে এমন অ্যারে তৈরি করতে দেয় যা UI-তে ডেটা পরিবর্তন হলে স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায় এবং UI থেকে কোনো পরিবর্তন হলে তা ডেটা মডেলেও প্রতিফলিত হয়। Observable Arrays সাধারণত ব্যবহার হয়, যখন আপনি ডাইনামিক ডেটার সাথে কাজ করছেন, যেমন: তালিকা, টেবিল বা লিস্ট আইটেম যেখানে একাধিক আইটেম যোগ/অপসারণ করা হয়।

KnockoutJS তে Observable Arrays ব্যবহার করার ধারণা

KnockoutJS তে observable array হল এমন একটি অ্যারে, যার মধ্যে থাকা প্রতিটি আইটেম একটি observable হিসাবে ট্র্যাক করা হয়। এর মানে হল, যখন আপনি অ্যারেতে কোনো আইটেম যোগ করেন বা অপসারণ করেন, তখন UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।

Observable Arrays কীভাবে কাজ করে?

KnockoutJS তে observable array তৈরি করতে ko.observableArray() ফাংশন ব্যবহার করা হয়। এটি একটি বিশেষ টাইপের observable যা array এর মান ট্র্যাক করে এবং যখন অ্যারের কোনো আইটেম পরিবর্তিত হয়, UI তাও আপডেট হয়।

Observable Array এর ব্যবহার:

1. Observable Array তৈরি করা

KnockoutJS তে observable array তৈরি করার জন্য ko.observableArray() ফাংশন ব্যবহার করতে হবে।

Example:

// Observable Array তৈরি
var fruits = ko.observableArray(['Apple', 'Banana', 'Orange']);

// এটির মান পরীক্ষা করা
console.log(fruits());  // ["Apple", "Banana", "Orange"]

এখানে, fruits একটি observable array যা Apple, Banana, এবং Orange আইটেম ধারণ করে। আপনি fruits() ব্যবহার করে এটি রিটার্ন করতে পারেন।

2. Observable Array তে আইটেম যোগ করা বা অপসারণ করা

KnockoutJS তে observable array তে নতুন আইটেম যোগ করার জন্য push(), unshift(), এবং আইটেম অপসারণ করার জন্য pop(), shift() ব্যবহার করা হয়।

Example:

// Observable array তে নতুন আইটেম যোগ করা
fruits.push('Grapes');

// Observable array তে আইটেম অপসারণ করা
fruits.pop();  // Removes 'Grapes'

// নতুন মান চেক করা
console.log(fruits());  // ["Apple", "Banana", "Orange"]

এখানে:

  • push() একটি নতুন আইটেম অ্যারের শেষে যোগ করবে।
  • pop() অ্যারের শেষ থেকে আইটেমটি অপসারণ করবে।

3. Observable Array তে ইন্টারঅ্যাকশন করা (UI তে Binding)

KnockoutJS তে observable arrays কে HTML উপাদানগুলোর সাথে বাইন্ড করতে data-bind ব্যবহার করা হয়।

Example:

<ul data-bind="foreach: fruits">
    <li data-bind="text: $data"></li>
</ul>

<script>
    var viewModel = {
        fruits: ko.observableArray(['Apple', 'Banana', 'Orange'])
    };
    ko.applyBindings(viewModel);
</script>

এখানে:

  • data-bind="foreach: fruits" নির্দেশ করে যে fruits অ্যারেটি ul ট্যাগের মধ্যে প্রতিটি আইটেম হিসেবে প্রদর্শিত হবে।
  • text: $data নির্দেশ করে যে প্রতি আইটেমের মান টেক্সট হিসেবে প্রদর্শিত হবে।

এটি একটি unordered list (UL) তৈরি করবে যেখানে fruits অ্যারে এর সব আইটেম প্রদর্শিত হবে।

4. Observable Array তে অন্যান্য মেথড ব্যবহার করা

KnockoutJS এর observable array তে কিছু আরেকটি গুরুত্বপূর্ণ মেথড রয়েছে, যেগুলো দিয়ে আপনি ডেটা ম্যানিপুলেট করতে পারেন, যেমন remove(), removeAll(), replace() ইত্যাদি।

Example:

// আইটেম মুছে ফেলা
fruits.remove('Banana');

// সব আইটেম মুছে ফেলা
fruits.removeAll();

// আইটেম প্রতিস্থাপন করা
fruits.replace('Apple', 'Pineapple');

// নতুন মান চেক করা
console.log(fruits());  // ["Pineapple", "Orange"]

এখানে:

  • remove() ফাংশন ব্যবহার করে আপনি নির্দিষ্ট আইটেম মুছে ফেলতে পারেন।
  • removeAll() সব আইটেম মুছে ফেলে।
  • replace() ফাংশন ব্যবহার করে একটি আইটেম অন্য একটি আইটেম দ্বারা প্রতিস্থাপন করা হয়।

5. KnockoutJS এর Observable Array তে Computed Observables

Computed observables ব্যবহার করে আপনি একটি observable array এর উপর নির্ভরশীল মান তৈরি করতে পারেন। এটি আপনার অ্যারে পরিবর্তিত হলে স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।

Example:

var fruits = ko.observableArray(['Apple', 'Banana', 'Orange']);

var totalFruits = ko.computed(function() {
    return fruits().length;  // fruits array এর মোট আইটেম গুনে সাইজ
});

console.log(totalFruits());  // 3
fruits.push('Grapes');
console.log(totalFruits());  // 4

এখানে:

  • ko.computed() ফাংশন ব্যবহার করে আমরা totalFruits নামক একটি computed observable তৈরি করেছি, যা fruits() এর উপর নির্ভরশীল এবং যখন fruits পরিবর্তিত হয়, তখন এটি আপডেট হয়।

6. Observable Array তে Filter ব্যবহার করা

ko.computed() এর সাহায্যে আপনি observable array এর মধ্যে নির্দিষ্ট শর্তের ভিত্তিতে ফিল্টারও করতে পারেন।

Example:

var fruits = ko.observableArray(['Apple', 'Banana', 'Orange', 'Grapes']);

var filteredFruits = ko.computed(function() {
    return ko.utils.arrayFilter(fruits(), function(fruit) {
        return fruit.length > 5;  // শুধু ৫টি বা তার বেশি অক্ষরের ফল ফিল্টার করা
    });
});

console.log(filteredFruits());  // ["Banana", "Orange"]

এখানে:

  • ko.utils.arrayFilter() ফাংশন ব্যবহার করে আমরা অ্যারেটির উপর ফিল্টার প্রয়োগ করেছি এবং শুধু সেই আইটেম গুলোকে নির্বাচন করেছি, যার নাম ৫টি বা তার বেশি অক্ষরের।

সারাংশ:

  • KnockoutJS তে Observable Arrays ব্যবহার করা যায় ডেটার তালিকা এবং UI এর মধ্যে দুই-মুখী ডেটা বাইন্ডিং বাস্তবায়ন করতে।
  • ko.observableArray() দিয়ে একটি observable array তৈরি করা হয়, যার মধ্যে push(), pop(), remove(), removeAll() ইত্যাদি মেথড ব্যবহার করে ডেটা পরিচালনা করা হয়।
  • foreach এবং text বাইন্ডিং ব্যবহার করে observable array এর আইটেম HTML উপাদানগুলোর সাথে বাইন্ড করা হয়।
  • computed ব্যবহার করে আপনি observable array এর উপর নির্ভরশীল নতুন মান তৈরি করতে পারেন।
  • ko.utils.arrayFilter() ব্যবহার করে অ্যারে ফিল্টার করা যায়।

KnockoutJS তে observable arrays এর সাহায্যে আপনি ডাইনামিক এবং প্রতিক্রিয়াশীল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে UI এবং ডেটার মধ্যে স্বয়ংক্রিয় সিঙ্ক্রোনাইজেশন হয়।

Content added By

Computed Observables এর মাধ্যমে ডেটা গণনা

232

KnockoutJS তে Computed Observables এমন একটি শক্তিশালী ফিচার, যা ডেটার উপর ভিত্তি করে ডাইনামিকভাবে গণনা (calculation) করার জন্য ব্যবহৃত হয়। এটি বিশেষ করে তখন দরকারি যখন আপনি কিছু ডেটা পরিবর্তিত হলে সেই অনুযায়ী অন্য ডেটার মান আপডেট করতে চান।

Computed Observables কী?

Computed Observables হল এমন observables যা অন্য observables এর উপর নির্ভরশীল থাকে। যখন যেসকল observables এগুলির উপর নির্ভরশীল, সেগুলির মান পরিবর্তিত হয়, তখন কম্পিউটেড observable স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।

এটি two-way binding এর মতো কাজ করে, তবে এখানে আপনি শুধুমাত্র ডেটা আপডেট করতে না গিয়ে অন্য observables এর মানের উপর ভিত্তি করে ডেটা গণনা করেন।

Computed Observables এর সুবিধা:

  1. Dynamic Calculation: আপনি যে ডেটার উপর ভিত্তি করে গণনা করতে চান, তা পরিবর্তিত হলে কম্পিউটেড observable স্বয়ংক্রিয়ভাবে আপডেট হয়।
  2. Separation of Concerns: গণনা এবং ডেটা আপডেটের লজিক আলাদা রাখার সুবিধা দেয়।
  3. Performance Optimization: শুধুমাত্র প্রয়োজনীয় সময়েই ডেটা আপডেট হয়, অর্থাৎ কম্পিউটেড observables শুধুমাত্র তার নির্ভরশীল observables পরিবর্তিত হলে আপডেট হয়।

KnockoutJS তে Computed Observables ব্যবহার করা

এখন, আসুন Computed Observables কিভাবে ব্যবহার করা যায় তা একটি উদাহরণের মাধ্যমে বুঝে নেওয়া যাক।

Example: Total Price Calculation in a Shopping Cart

ধরা যাক, একটি শপিং কার্টে কয়েকটি আইটেম রয়েছে এবং প্রতিটি আইটেমের দাম এবং পরিমাণ পরিবর্তন হতে পারে। আমরা চাই, যখন আইটেমের পরিমাণ বা দাম পরিবর্তিত হবে, তখন মোট মূল্য স্বয়ংক্রিয়ভাবে আপডেট হবে।

HTML:

<div>
    <h3>Shopping Cart</h3>
    <ul>
        <li>
            <label>Item 1: </label>
            <input type="number" data-bind="value: item1Quantity">
            <span>Price: $<span data-bind="text: item1Price"></span></span>
        </li>
        <li>
            <label>Item 2: </label>
            <input type="number" data-bind="value: item2Quantity">
            <span>Price: $<span data-bind="text: item2Price"></span></span>
        </li>
    </ul>

    <p>Total Price: $<span data-bind="text: totalPrice"></span></p>
</div>

JavaScript (KnockoutJS কোড):

function ViewModel() {
    var self = this;

    // Item Prices
    self.item1Price = ko.observable(10);  // Price of item 1
    self.item2Price = ko.observable(15);  // Price of item 2

    // Item Quantities
    self.item1Quantity = ko.observable(1);  // Quantity of item 1
    self.item2Quantity = ko.observable(1);  // Quantity of item 2

    // Computed Observable for Total Price
    self.totalPrice = ko.computed(function() {
        var total = (self.item1Price() * self.item1Quantity()) + (self.item2Price() * self.item2Quantity());
        return total.toFixed(2);  // Fixed to 2 decimal points
    });
}

// Activates knockout.js
ko.applyBindings(new ViewModel());

ব্যাখ্যা:

  1. Observables:
    • item1Price, item2Price, item1Quantity, এবং item2Quantity সবগুলি observable। এগুলোর মান পরিবর্তিত হলে, KnockoutJS তা UI তে রিফ্লেক্ট করবে।
  2. Computed Observable:
    • totalPrice একটি computed observable যা item1Price, item1Quantity, item2Price, এবং item2Quantity এর উপর ভিত্তি করে গণনা করা হয়। যখন কোন একটি মান পরিবর্তিত হয়, তখন totalPrice আপডেট হবে।
  3. UI Data Binding:
    • data-bind="value: item1Quantity" এবং data-bind="text: item1Price" KnockoutJS এর data-bind সিনট্যাক্স ব্যবহার করে observable এর মান UI তে বাউন্ড করা হচ্ছে।
    • data-bind="text: totalPrice" দিয়ে মোট মূল্য (total price) UI তে দেখানো হচ্ছে।
  4. Automatic Update:
    • KnockoutJS স্বয়ংক্রিয়ভাবে totalPrice এর মান গণনা করে যখন item1Quantity, item2Quantity, item1Price, বা item2Price এর মান পরিবর্তিত হয়। অর্থাৎ, যখন আপনি ইনপুট ফিল্ডে পরিমাণ পরিবর্তন করবেন, মোট মূল্য আপডেট হবে।

Computed Observables এর অন্যান্য ব্যবহার:

  1. Conditional Formatting:

    • আপনি একটি কম্পিউটেড observable ব্যবহার করে শর্তসাপেক্ষ স্টাইল পরিবর্তন করতে পারেন।
    self.statusClass = ko.computed(function() {
        return self.isActive() ? 'active' : 'inactive';
    });
    
  2. Dynamic UI Elements:

    • UI এলিমেন্টের মধ্যে ডাইনামিক তথ্য ইনজেক্ট করার জন্যও কম্পিউটেড observables ব্যবহার করা যায়।
    self.fullName = ko.computed(function() {
        return self.firstName() + ' ' + self.lastName();
    });
    
  3. Complex Calculations:
    • আপনি computed observables ব্যবহার করে অনেকগুলো observable এর উপর ভিত্তি করে জটিল গণনা বা লজিক প্রয়োগ করতে পারেন।

Advantages of Computed Observables:

  1. Automatic Updates: আপনি যে observables এর উপর নির্ভরশীল, সেগুলি পরিবর্তিত হলে computed observable স্বয়ংক্রিয়ভাবে আপডেট হবে, ফলে কোডের কার্যকারিতা বাড়ে।
  2. Reduced Redundancy: একাধিক জায়গায় একই গণনা করার প্রয়োজন নেই। Computed observable আপনাকে একবার সেটি গণনা করতে সহায়তা করবে, এবং ডেটা পরিবর্তিত হলে তা পুনরায় গণনা হবে।
  3. Declarative Syntax: কম্পিউটেড observables খুব সহজ এবং পরিষ্কার ডিক্লেয়ারেটিভ সিনট্যাক্সে কাজ করে।
  4. Efficiency: কম্পিউটেড observables শুধুমাত্র তাদের নির্ভরশীল ডেটা পরিবর্তিত হলে আপডেট হবে, যার ফলে এটি অনেক বেশি কার্যকরী এবং দক্ষ।

Computed Observables হল KnockoutJS এর একটি শক্তিশালী বৈশিষ্ট্য যা ডাইনামিক ডেটা গণনা এবং আপডেট করার জন্য ব্যবহৃত হয়। এটি ডেটা-বাইন্ডিং এবং two-way data binding এর সাথে মিলিত হয়ে অ্যাপ্লিকেশনগুলিকে আরও ইন্টারঅ্যাকটিভ এবং কার্যকরী করে তোলে। আপনি computed observables ব্যবহার করে সোজাসুজি ডেটা আপডেট, শর্তসাপেক্ষ ফরম্যাটিং, এবং অন্যান্য জটিল কাজ করতে পারেন, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে অনেক সুবিধা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...