KnockoutJS একটি JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) ডিজাইন প্যাটার্নকে সহজে বাস্তবায়ন করতে সাহায্য করে। এটি data binding এবং dependency tracking এর মাধ্যমে ওয়েব অ্যাপ্লিকেশনের ইন্টারফেস এবং ডেটার মধ্যে সিঙ্ক্রোনাইজেশন সহজ করে তোলে। KnockoutJS ব্যবহার করলে আপনি HTML এবং JavaScript এর মধ্যে একটি ক্লিন এবং প্রতিক্রিয়া সম্পন্ন সিস্টেম তৈরি করতে পারবেন।
এখানে KnockoutJS এর set-up এবং installation প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হবে।
KnockoutJS সেটআপ এবং ইনস্টলেশন
KnockoutJS লাইব্রেরি সহজেই ওয়েব প্রকল্পে সংযুক্ত করা যায়। এটি কোনো নির্দিষ্ট ফ্রেমওয়ার্কের সাথে সম্পূর্ণভাবে কাজ করতে পারে না, বরং এটি একটি স্বতন্ত্র লাইব্রেরি হিসেবে কাজ করে এবং অন্যান্য JavaScript ফ্রেমওয়ার্কের সাথে সহজে ইন্টিগ্রেট করা যায়।
Step 1: KnockoutJS ইনস্টলেশন
KnockoutJS ইনস্টল করার জন্য কয়েকটি পদ্ধতি রয়েছে। এখানে কয়েকটি জনপ্রিয় পদ্ধতি দেখানো হলো।
1. CDN এর মাধ্যমে ইনস্টলেশন:
আপনি CDN (Content Delivery Network) ব্যবহার করে সহজে KnockoutJS ইনস্টল করতে পারেন, যেটি এক্সটার্নাল লাইব্রেরি হিসেবে সরাসরি আপনার HTML ফাইলে যুক্ত করা হয়।
এখানে KnockoutJS এর CDN লিংক ব্যবহার করা হচ্ছে:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS Setup</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>
<h1>KnockoutJS Setup</h1>
<div>
<label>Your Name: </label>
<input type="text" data-bind="value: name, valueUpdate: 'input'">
<h2>Hello, <span data-bind="text: name"></span></h2>
</div>
<script>
// Applying KnockoutJS bindings
function AppViewModel() {
this.name = ko.observable('John');
}
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
এখানে knockout-min.js ফাইলটি CDN থেকে লোড হচ্ছে এবং এটি আপনার HTML পেজে KnockoutJS লাইব্রেরি যোগ করবে।
2. npm বা yarn এর মাধ্যমে ইনস্টলেশন:
যদি আপনি একটি Node.js প্রকল্প ব্যবহার করেন, তবে npm বা yarn এর মাধ্যমে KnockoutJS ইনস্টল করা যেতে পারে।
npm ব্যবহার করে ইনস্টল:
npm install knockout
yarn ব্যবহার করে ইনস্টল:
yarn add knockout
এই কমান্ডগুলো চালানোর পর, আপনি আপনার JavaScript ফাইলে KnockoutJS ইমপোর্ট করতে পারবেন:
import ko from 'knockout';
3. Download and Local Installation:
আপনি KnockoutJS এর সর্বশেষ ভার্সন KnockoutJS এর অফিসিয়াল ওয়েবসাইট থেকে ডাউনলোড করে আপনার লোকাল প্রকল্পে ব্যবহার করতে পারেন।
Download Link: KnockoutJS Download
Step 2: Basic KnockoutJS Example
KnockoutJS তে MVVM (Model-View-ViewModel) প্যাটার্ন ব্যবহার করা হয়, যেখানে:
- Model: অ্যাপ্লিকেশনের ডেটা বা ব্যাকএন্ড।
- View: HTML UI (User Interface)।
- ViewModel: JavaScript অবজেক্ট যা View এবং Model এর মধ্যে সংযোগ স্থাপন করে।
Basic Example: Data Binding 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 Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>
<h2>KnockoutJS Example</h2>
<!-- View -->
<div>
<label>Your Name: </label>
<input type="text" data-bind="value: name, valueUpdate: 'input'">
<h3>Hello, <span data-bind="text: name"></span>!</h3>
</div>
<script>
// ViewModel
function AppViewModel() {
this.name = ko.observable('John Doe');
}
// Apply Knockout bindings
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
Code Explanation:
- View: HTML অংশ যা ব্যবহারকারীকে ইনপুট দেওয়ার সুযোগ দেয় এবং তা KnockoutJS এর মাধ্যমে bind হয়।
<input>ট্যাগেরdata-bind="value: name"দ্বারা এই ইনপুট ফিল্ডটি viewModel.name এর সাথে বাঁধা (bind)।<span data-bind="text: name"></span>এর মাধ্যমেnameভ্যালু সরাসরি পেজে প্রদর্শিত হয়।
- ViewModel: AppViewModel নামক একটি জাভাস্ক্রিপ্ট অবজেক্ট, যেখানে
nameএকটি observable (পদার্থগতভাবে পর্যবেক্ষণযোগ্য) প্রপার্টি।
KnockoutJS Binding:
- value: ইনপুট ফিল্ডে ব্যবহারকারীর ইনপুট ভ্যালু সংরক্ষণ করবে।
- text: একটি HTML এলিমেন্টে ডেটা প্রদর্শন করবে।
ko.observable():
- এটি KnockoutJS এর একটি প্রধান ফিচার যা ডেটা observable করে তোলে। অর্থাৎ, যখন এই ডেটার মান পরিবর্তিত হয়, তখন স্বয়ংক্রিয়ভাবে UI আপডেট হয়ে যাবে।
Step 3: KnockoutJS এর অন্যান্য গুরুত্বপূর্ণ ফিচার
1. Observable Arrays:
KnockoutJS তে observable arrays ব্যবহার করে ডেটার তালিকা বা অ্যারে পরিচালনা করা যায়। এটি ডেটা পরিবর্তিত হলে UI আপডেট করতে সাহায্য করে।
function AppViewModel() {
this.items = ko.observableArray(['Apple', 'Banana', 'Cherry']);
}
ko.applyBindings(new AppViewModel());
এখানে observableArray() ব্যবহার করা হয়েছে যা অ্যারের ডেটা পরিবর্তিত হলে UI আপডেট করবে।
2. Computed Observables:
Computed observables এমন observables যা অন্য observables থেকে মান গণনা করে। এটি UI বা ডেটা পরিবর্তনের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে মান আপডেট করে।
function AppViewModel() {
this.firstName = ko.observable('John');
this.lastName = ko.observable('Doe');
this.fullName = ko.computed(function() {
return this.firstName() + ' ' + this.lastName();
}, this);
}
ko.applyBindings(new AppViewModel());
এখানে fullName একটি computed observable যা firstName এবং lastName এর মানের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে আপডেট হবে।
3. Custom Bindings:
KnockoutJS আপনাকে custom bindings তৈরি করতে দেয়। উদাহরণস্বরূপ, যদি আপনি কোনো বিশেষ অ্যাকশন বা স্টাইল যোগ করতে চান, তাহলে আপনি নিজস্ব binding তৈরি করতে পারেন।
ko.bindingHandlers.upperCase = {
update: function(element, valueAccessor) {
var value = ko.unwrap(valueAccessor());
element.innerText = value.toUpperCase();
}
};
এখানে, upperCase নামক একটি কাস্টম binding তৈরি করা হয়েছে যা যে কোনো ভ্যালুকে uppercase এ কনভার্ট করে।
KnockoutJS একটি শক্তিশালী লাইব্রেরি যা MVVM (Model-View-ViewModel) প্যাটার্নের ভিত্তিতে ডেটা বাইন্ডিং এবং ইউজার ইন্টারফেস ডেভেলপমেন্ট সহজ করে তোলে। KnockoutJS setup এবং installation প্রক্রিয়া খুবই সহজ এবং আপনি CDN, npm, বা yarn ব্যবহার করে সহজে লাইব্রেরি ইনস্টল করতে পারেন। এর সাহায্যে আপনি observables, computed observables, এবং custom bindings ব্যবহার করে ডাইনামিক এবং প্রতিক্রিয়া সম্পন্ন ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
KnockoutJS একটি জনপ্রিয় JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) ডিজাইন প্যাটার্ন অনুসরণ করে। এটি ডাটা-বাইন্ডিং এবং ডাইনামিক UI তৈরি করার জন্য ব্যবহৃত হয়, যা ওয়েব অ্যাপ্লিকেশনগুলোকে আরও ইন্টারঅ্যাকটিভ এবং প্রতিক্রিয়াশীল করে তোলে।
আপনি KnockoutJS CDN ব্যবহার করে খুব সহজেই ইনস্টল করতে পারেন এবং আপনার প্রজেক্টে এটি অন্তর্ভুক্ত করতে পারেন।
KnockoutJS CDN ব্যবহার করে ইনস্টল করা:
KnockoutJS এর সিডিএন ব্যবহার করার জন্য আপনাকে সরাসরি HTML ফাইলের মধ্যে CDN লিংক যোগ করতে হবে। এটি আপনাকে KnockoutJS লাইব্রেরি আপনার প্রজেক্টে অন্তর্ভুক্ত করার জন্য সবচেয়ে সহজ পদ্ধতি প্রদান করবে, এবং এতে কোনো লোকাল ফাইল ডাউনলোড করার দরকার পড়বে না।
Steps:
- KnockoutJS CDN লিংক সংগ্রহ করুন:
KnockoutJS এর সর্বশেষ সংস্করণটি ব্যবহার করতে আপনাকে সিডিএন লিংকটি আপনার HTML ফাইলে অন্তর্ভুক্ত করতে হবে। এটি Google CDN, CDNJS, অথবা jsDelivr থেকে সরবরাহ করা হয়।
এখানে CDNJS থেকে KnockoutJS এর সিডিএন লিংক উদাহরণ হিসেবে দেয়া হলো:
<!-- Latest version of KnockoutJS from CDNJS -->
<script src="https://cdn.jsdelivr.net/npm/knockout@3.5.1/build/output/knockout-latest.min.js"></script>
এই লাইনটি আপনার HTML ফাইলে <head> বা <body> ট্যাগের মধ্যে অন্তর্ভুক্ত করতে হবে।
Example HTML File:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS Example</title>
<!-- Include KnockoutJS via CDN -->
<script src="https://cdn.jsdelivr.net/npm/knockout@3.5.1/build/output/knockout-latest.min.js"></script>
</head>
<body>
<div>
<h2>KnockoutJS Example</h2>
<!-- Input field bound to the 'name' model -->
<input type="text" data-bind="value: name, valueUpdate: 'input'" placeholder="Enter your name">
<p>Hello, <span data-bind="text: name"></span>!</p>
</div>
<script>
// Define the ViewModel
function AppViewModel() {
this.name = ko.observable("John Doe");
}
// Activating KnockoutJS on the ViewModel
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
Code Explanation:
- CDN Inclusion:
scriptট্যাগের মাধ্যমে KnockoutJS এর সর্বশেষ সংস্করণের সিডিএন লিংক যুক্ত করা হয়েছে। - HTML Bindings:
data-bind="value: name": এই bindingটিinputএলিমেন্টের ভ্যালুকেnameobservable ভেরিয়েবল থেকে বাইন্ড করে।data-bind="text: name": এই bindingটিspanএলিমেন্টেnameobservable ভেরিয়েবলের মান প্রদর্শন করবে।
- KnockoutJS ViewModel:
AppViewModelনামে একটি ভিউ মডেল তৈরি করা হয়েছে, যেখানেnameনামক একটি observable প্রপার্টি ডিফাইন করা হয়েছে।ko.observable()ব্যবহার করে KnockoutJS কে অবজার্ভেবল ভ্যালু ট্র্যাক করার জন্য ইনস্ট্রাকশন দেওয়া হয়।
- ko.applyBindings(): এই ফাংশনটি KnockoutJS কে ইনিশিয়ালাইজ এবং বাউন্ডিং প্রক্রিয়া সম্পন্ন করতে ব্যবহৃত হয়। এটি
AppViewModelক্লাসের ইনস্ট্যান্স গ্রহণ করে এবং HTML ইলিমেন্টে ডাটা-বাইন্ডিং প্রক্রিয়া সম্পন্ন করে।
CDN দিয়ে KnockoutJS ব্যবহার করার সুবিধা:
- সহজ ইন্টিগ্রেশন: KnockoutJS CDN ব্যবহার করে আপনি সহজেই আপনার ওয়েবপেজে লাইব্রেরি ইন্টিগ্রেট করতে পারবেন, ডাউনলোড বা লোকালি ফাইল ম্যানেজ করার দরকার নেই।
- আপডেট সুবিধা: সিডিএন ব্যবহার করার মাধ্যমে আপনি সর্বশেষ সংস্করণটি সরাসরি ব্যবহার করতে পারবেন। নতুন ফিচার বা বাগ ফিক্স পেতে সিডিএন স্বয়ংক্রিয়ভাবে আপডেট হয়।
- প্রদর্শনের গতি: সিডিএন ব্যবহার করলে ফাইলগুলি সিডিএন সার্ভারের মাধ্যমে দ্রুত লোড হয়, যেহেতু এটি সারা বিশ্বের নেটওয়ার্কে বিতরণ করা থাকে।
- বিভিন্ন উত্স থেকে নির্ভরযোগ্য: যেহেতু সিডিএন বিভিন্ন উত্স থেকে আসে, এটি ওয়েবপেজের লোড টাইম কমাতে সহায়তা করে এবং সার্ভারের ওপর চাপ কমায়।
KnockoutJS কে CDN ব্যবহার করে ইনস্টল এবং ইন্টিগ্রেট করা খুবই সহজ। FuelPHP বা অন্য কোনো PHP ফ্রেমওয়ার্কের সাথে এটি ব্যবহার করার জন্য আপনাকে শুধু সিডিএন লিংক HTML ফাইলে যোগ করতে হবে এবং MVVM ডিজাইন প্যাটার্নে ডাটা-বাইন্ডিং সুবিধা গ্রহণ করতে পারবেন। এটি আপনার ওয়েব অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং প্রতিক্রিয়াশীল করে তোলে।
KnockoutJS একটি জনপ্রিয় JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) আর্কিটেকচার অনুসরণ করে এবং data-binding ও dependency tracking এর মাধ্যমে ইউজার ইন্টারফেস (UI) তৈরি করতে সাহায্য করে। KnockoutJS দিয়ে আপনি dynamic UI তৈরি করতে পারেন যেখানে মডেল ডেটা পরিবর্তন হলে, ভিউ স্বয়ংক্রিয়ভাবে আপডেট হয়।
এখানে KnockoutJS এর local setup করার জন্য স্টেপ বাই স্টেপ গাইড দেওয়া হল:
1. KnockoutJS Setup করার ধাপ
KnockoutJS সেটআপ করার জন্য আপনাকে প্রথমে এর লাইব্রেরি ইন্সটল করতে হবে এবং HTML পেজে অন্তর্ভুক্ত করতে হবে। এটি CDN বা local file দিয়ে করতে পারেন।
a. CDN ব্যবহার করে KnockoutJS ইনস্টল:
KnockoutJS ব্যবহার করার সবচেয়ে সহজ পদ্ধতি হল CDN (Content Delivery Network) থেকে লাইব্রেরি লোড করা। নিচের কোডটি আপনার HTML পেজে <head> ট্যাগের মধ্যে যুক্ত করুন।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS Setup</title>
<!-- Load KnockoutJS from CDN -->
<script src="https://cdn.jsdelivr.net/npm/knockout@3.5.1/build/output/knockout-latest.js"></script>
</head>
<body>
<h2>KnockoutJS Example</h2>
<!-- View: HTML binding -->
<div>
<p>Your name is: <span data-bind="text: name"></span></p>
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
</div>
<script>
// ViewModel: KnockoutJS model
function AppViewModel() {
this.name = ko.observable("John Doe"); // Knockout observable
}
// Activating KnockoutJS
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
এখানে:
- KnockoutJS CDN লোড করা হয়েছে, যাতে আপনি সরাসরি লাইব্রেরিটি ব্যবহার করতে পারেন।
- observable ব্যবহার করে একটি
nameপ্রপার্টি তৈরি করা হয়েছে যা ইন্টারফেসে বাইন্ড করা হয়েছে। data-bindএর মাধ্যমে HTML উপাদানগুলিতে KnockoutJS ডেটা বাইন্ডিং প্রয়োগ করা হয়েছে। এখানে,textএবংvalueবাইন্ডিং ব্যবহার করা হয়েছে।
b. Local File থেকে KnockoutJS ব্যবহার করা:
আপনি KnockoutJS এর লাইব্রেরি ডাউনলোড করে আপনার প্রজেক্টে লোকালি যুক্ত করতে পারেন। নিচে কিভাবে এটি করবেন:
- KnockoutJS লাইব্রেরি ডাউনলোড করুন: KnockoutJS এর সর্বশেষ ভার্সন ডাউনলোড করতে KnockoutJS GitHub Repository থেকে ডাউনলোড করুন বা knockoutjs.com থেকে ডাউনলোড করুন।
- লাইব্রেরি ফাইল যুক্ত করুন: আপনার প্রজেক্টের ডিরেক্টরিতে KnockoutJS ফাইলটি রেখে HTML ফাইলে যোগ করুন:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS Setup</title>
<!-- Load KnockoutJS from local file -->
<script src="knockout.js"></script>
</head>
<body>
<h2>KnockoutJS Example</h2>
<!-- View: HTML binding -->
<div>
<p>Your name is: <span data-bind="text: name"></span></p>
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
</div>
<script>
// ViewModel: KnockoutJS model
function AppViewModel() {
this.name = ko.observable("John Doe"); // Knockout observable
}
// Activating KnockoutJS
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
এখানে, knockout.js ফাইলটি লোকালি ইনক্লুড করা হয়েছে, যা আপনি আপনার প্রজেক্ট ফোল্ডারে রেখেছেন। আপনি knockout.js এর সঠিক পাথ নিশ্চিত করুন যাতে এটি সঠিকভাবে লোড হয়।
2. KnockoutJS এর মূল বৈশিষ্ট্য:
a. Observable:
KnockoutJS এ observable একটি খুবই গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি কোনো ভ্যালু বা ডেটা পরিবর্তন হলে UI কে স্বয়ংক্রিয়ভাবে আপডেট করে। observable হল একটি ফাংশন যা যে কোনো ভ্যালু ট্র্যাক করতে সাহায্য করে এবং পরিবর্তন হলে সেই ভ্যালুকে UI এর সাথে বাইন্ড করে।
var observableValue = ko.observable("Hello, Knockout!");
console.log(observableValue()); // Get the current value
observableValue("New Value"); // Set a new value
console.log(observableValue()); // Get the updated value
b. Data Binding:
KnockoutJS তে data-binding ব্যবহার করে আপনি মডেল ডেটাকে ভিউ এর সাথে বাইন্ড করতে পারেন। এটি খুব সহজ এবং স্বয়ংক্রিয়ভাবে ভিউ আপডেট করতে সহায়তা করে। নিচে এর উদাহরণ দেওয়া হলো:
<div>
<p>Your name is: <span data-bind="text: name"></span></p>
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
</div>
এখানে, data-bind এট্রিবিউট ব্যবহার করে:
text: নাম ভিউ-এ প্রদর্শন করা।value: ইনপুট ফিল্ডের ভ্যালু মডেল ডেটার সাথে বাইন্ড করা।
c. Computed Observables:
Computed observables এমন একটি ফিচার যা স্বয়ংক্রিয়ভাবে কোনো 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
এখানে, fullName একটি computed observable যা firstName এবং lastName এর পরিবর্তন অনুসরণ করে এবং একটি নতুন ভ্যালু রিটার্ন করে।
3. KnockoutJS এর সাথে Basic Example:
এখন, একটি KnockoutJS অ্যাপ্লিকেশনের একটি পূর্ণ উদাহরণ দেয়া হলো যেখানে আপনি মডেল ডেটাকে UI এর সাথে বাইন্ড করতে পারবেন।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS Example</title>
<script src="https://cdn.jsdelivr.net/npm/knockout@3.5.1/build/output/knockout-latest.js"></script>
</head>
<body>
<h2>KnockoutJS Example</h2>
<div>
<p>Your name is: <span data-bind="text: name"></span></p>
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
</div>
<script>
// ViewModel: Define the model with observables
function AppViewModel() {
this.name = ko.observable("John Doe");
}
// Apply bindings
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
এখানে:
- KnockoutJS এর মাধ্যমে মডেল এবং ভিউকে বাইন্ড করা হয়েছে। ইনপুট ফিল্ডের মধ্যে টাইপ করলে নামটি সরাসরি প্যারাগ্রাফে পরিবর্তিত হবে।
ko.observable()ব্যবহার করা হয়েছে নামের ভ্যালুকে ট্র্যাক করতে এবংdata-bindব্যবহার করে সেটি ভিউ তে দেখানো হয়েছে।
KnockoutJS তে local setup করা খুবই সহজ। আপনি CDN বা local file ব্যবহার করে KnockoutJS ইনস্টল করতে পারেন এবং এটি আপনার অ্যাপ্লিকেশনে ডাইনামিক ডেটা বাইন্ডিং, computed observables এবং অন্যান্য MVVM ফিচার সহজে প্রয়োগ করতে সহায়তা করবে। KnockoutJS এর মাধ্যমে আপনি রিয়েল-টাইম ইউজার ইন্টারফেস তৈরি করতে পারবেন যা ডেটা পরিবর্তনের সাথে সাথে UI আপডেট হবে, এবং এটি আপনার ওয়েব অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ইউজার-ফ্রেন্ডলি করবে।
KnockoutJS একটি JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) প্যাটার্ন অনুসরণ করে এবং ওয়েব অ্যাপ্লিকেশনগুলিতে ডেটা বাইন্ডিং এবং UI কন্ট্রোল সহজ করে তোলে। এটি খুবই সহজ এবং কার্যকরী উপায়ে UI এবং ডেটার মধ্যে সম্পর্ক স্থাপন করতে সহায়তা করে। এর মাধ্যমে আপনি two-way data binding, dependency tracking, এবং dynamic UI updates করতে পারবেন।
এখানে প্রথম KnockoutJS অ্যাপ তৈরি করার পুরো প্রক্রিয়া আলোচনা করা হবে।
1. KnockoutJS এর ইনস্টলেশন:
KnockoutJS কে আপনার প্রকল্পে অন্তর্ভুক্ত করার দুটি সাধারণ উপায় রয়েছে:
a. CDN ব্যবহার করে:
এটি সবচেয়ে সহজ এবং দ্রুত পদ্ধতি। আপনি KnockoutJS লাইব্রেরিটি একটি CDN (Content Delivery Network) থেকে লোড করতে পারেন। নিচে এর উদাহরণ দেওয়া হয়েছে:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First KnockoutJS App</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout.js"></script>
</head>
<body>
<div>
<label>Your Name: </label>
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
<h2>Hello, <span data-bind="text: name"></span>!</h2>
</div>
<script>
// KnockoutJS model
function AppViewModel() {
this.name = ko.observable("John Doe");
}
// Activating KnockoutJS
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
b. KnockoutJS লাইব্রেরি ফাইল ডাউনলোড করা:
আপনি KnockoutJS লাইব্রেরি আপনার প্রজেক্টে ডাউনলোড করে এবং স্থানীয়ভাবে ব্যবহার করতে পারেন। এর জন্য আপনি KnockoutJS এর অফিসিয়াল ওয়েবসাইট থেকে লাইব্রেরি ডাউনলোড করতে পারবেন এবং knockout.js ফাইলটি আপনার প্রজেক্টের ফোল্ডারে রাখবেন।
<script src="path/to/knockout.js"></script>
2. প্রথম KnockoutJS অ্যাপ তৈরি করা:
এখন আমরা একটি সহজ KnockoutJS অ্যাপ তৈরি করব যেখানে ব্যবহারকারী একটি টেক্সট ইনপুট দিবেন এবং সেই ইনপুটটি তৎক্ষণাৎ UI তে দেখানো হবে। এটি KnockoutJS এর two-way data binding এর ব্যবহার করবে।
KnockoutJS অ্যাপ উদাহরণ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>First KnockoutJS App</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout.js"></script>
</head>
<body>
<div>
<label for="name">Enter Your Name: </label>
<input type="text" id="name" data-bind="value: name, valueUpdate: 'input'" />
<p>Hello, <span data-bind="text: name"></span>!</p>
</div>
<script>
// ViewModel: Defines the data and behavior for the app
function AppViewModel() {
this.name = ko.observable("John Doe"); // Knockout observable for data binding
}
// Apply the bindings (connecting the ViewModel to the view)
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
3. ব্যাখ্যা:
- Knockout Observable:
this.name = ko.observable("John Doe");এখানেnameএকটি observable তৈরি হয়েছে। এর মান পরিবর্তন হলে এটি UI তে স্বয়ংক্রিয়ভাবে আপডেট হবে।- Observable হলো একটি বিশেষ KnockoutJS ফিচার যা ডেটার মান পরিবর্তন হওয়ার সাথে সাথে UI তে সেই পরিবর্তনটি দেখাবে।
- Data-Binding:
data-bind="value: name": এখানে আমরাinputএলিমেন্টটি Knockout এরnameঅবজার্ভেবল এর সাথে বাইন্ড করছি। এটি ব্যবহারকারী যখন ইনপুট দিবে তখনnameএর মান আপডেট হবে।data-bind="text: name": এখানে span এলিমেন্টেnameএর মান দেখানো হচ্ছে। যখনnameএর মান পরিবর্তিত হবে, তখন এটি UI তে স্বয়ংক্রিয়ভাবে আপডেট হবে।
valueUpdate: 'input':- এটি ইনপুট ফিল্ডের মান পরিবর্তন করার জন্য instant update সেট করে। অর্থাৎ, ইউজার যতবার ইনপুট পরিবর্তন করবেন, ততবার সেই পরিবর্তন real-time UI তে দেখা যাবে।
4. আরও কিছু KnockoutJS ফিচার:
KnockoutJS আরও কিছু শক্তিশালী ফিচার প্রদান করে, যেমন:
a. Computed Observables:
Computed Observables এমন একটি বৈশিষ্ট্য যা একাধিক observables থেকে একটি মান গণনা করে। যখন কোনো একটি observable পরিবর্তিত হয়, তখন computed মানও আপডেট হয়ে যাবে।
function AppViewModel() {
this.firstName = ko.observable("John");
this.lastName = ko.observable("Doe");
// computed observable to combine first name and last name
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
}
ko.applyBindings(new AppViewModel());
এখানে, fullName একটি computed observable যা firstName এবং lastName থেকে মান গ্রহণ করে এবং যখনই এই দুটি observable আপডেট হয়, fullName এর মানও স্বয়ংক্রিয়ভাবে পরিবর্তিত হবে।
b. Array Binding:
KnockoutJS তে অ্যারে ডেটার উপর ভিত্তি করে UI তৈরি করতে foreach বাইন্ডিং ব্যবহার করা হয়।
<ul data-bind="foreach: items">
<li data-bind="text: $data"></li>
</ul>
<script>
function AppViewModel() {
this.items = ko.observableArray(["Apple", "Banana", "Orange"]);
}
ko.applyBindings(new AppViewModel());
</script>
এখানে, ko.observableArray() ব্যবহার করে একটি অ্যারে তৈরি করা হয়েছে এবং foreach বাইন্ডিং ব্যবহার করে সেই অ্যারে থেকে আইটেমগুলো UI তে দেখানো হচ্ছে।
c. Event Binding:
KnockoutJS তে UI ইভেন্ট যেমন click, keyup ইত্যাদির জন্য ইভেন্ট বাইন্ডিংও সহজ।
<button data-bind="click: sayHello">Click me!</button>
<script>
function AppViewModel() {
this.sayHello = function() {
alert("Hello, Knockout!");
};
}
ko.applyBindings(new AppViewModel());
</script>
এখানে, click ইভেন্টে sayHello ফাংশনটি কল করা হচ্ছে। এই ফাংশনটি একটি আলার্ট বক্স প্রদর্শন করবে।
KnockoutJS এর মাধ্যমে আপনি খুব সহজে two-way data binding, computed observables, array binding, এবং event handling এর মতো শক্তিশালী ফিচারগুলি ব্যবহার করে ইন্টারঅ্যাক্টিভ ও ডায়নামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন। এটি MVVM প্যাটার্ন অনুসরণ করে, যার মাধ্যমে ডেটা এবং UI এর মধ্যে শক্তিশালী সম্পর্ক স্থাপন করা যায়।
এখন, আপনি যদি KnockoutJS দিয়ে একটি অ্যাপ্লিকেশন তৈরি করতে চান, তবে এই মৌলিক ধারণাগুলির মাধ্যমে আপনি দ্রুত শুরু করতে পারবেন।
KnockoutJS একটি শক্তিশালী JavaScript লাইব্রেরি যা Model-View-ViewModel (MVVM) ডিজাইন প্যাটার্ন অনুসরণ করে এবং ব্যবহারকারীর ইন্টারফেসের সাথে ডেটা বাঁধার জন্য data-binding এবং dependency tracking ফিচার প্রদান করে। KnockoutJS তে আপনার HTML ইলিমেন্টগুলোর সাথে ডেটা ইন্টারঅ্যাক্ট করতে পারেন এবং কোন পরিবর্তন ঘটলে স্বয়ংক্রিয়ভাবে UI আপডেট হয়ে যাবে।
এই গাইডে HTML ফাইলের মধ্যে KnockoutJS ইন্টিগ্রেশন কিভাবে করবেন এবং একটি সাধারণ KnockoutJS অ্যাপ তৈরি করবেন, তা আলোচনা করা হবে।
1. KnockoutJS লাইব্রেরি অন্তর্ভুক্ত করা:
প্রথমে, KnockoutJS লাইব্রেরি আপনার প্রজেক্টে যুক্ত করতে হবে। আপনি এটি CDN অথবা ফাইল ডাউনলোড করে ব্যবহার করতে পারেন।
CDN ব্যবহার করে KnockoutJS অন্তর্ভুক্ত করা:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>
<!-- KnockoutJS এর মধ্যে প্রথম অ্যাপ -->
<div>
<h2>KnockoutJS Example</h2>
<!-- Text binding example -->
<p>Hello, <span data-bind="text: name"></span>!</p>
<!-- Input binding example -->
<input type="text" data-bind="value: name, valueUpdate: 'input'" />
<!-- Button binding example -->
<button data-bind="click: changeName">Change Name</button>
</div>
<script>
// ViewModel (VM) তৈরি
function AppViewModel() {
this.name = ko.observable("John Doe"); // 'name' একটি observable
// 'changeName' মেথড
this.changeName = () => {
this.name("Jane Doe"); // নাম পরিবর্তন করা
};
}
// ViewModel ইনস্ট্যান্স তৈরি এবং KnockoutJS এর সাথে বেঁধে দেওয়া
ko.applyBindings(new AppViewModel()); // AppViewModel কে ভিউয়ের সাথে বেঁধে দেওয়া
</script>
</body>
</html>
এখানে:
- KnockoutJS এর CDN লিঙ্ক ব্যবহার করা হয়েছে। এটি ইন্টারনেটের মাধ্যমে লাইব্রেরি আপনার অ্যাপ্লিকেশনে যুক্ত করে।
- HTML Elements-এ
data-bindএট্রিবিউট ব্যবহার করে, আমরা KnockoutJS এর ডেটা-বাইন্ডিং ফিচারকে অ্যাপ্লিকেশনের UI এর সাথে যুক্ত করেছি। - ViewModel এর মধ্যে একটি observable (
this.name) ব্যবহার করা হয়েছে, যাতে নাম পরিবর্তন হলে UI স্বয়ংক্রিয়ভাবে আপডেট হয়।
2. KnockoutJS এর প্রধান বৈশিষ্ট্য এবং ডেটা-বাইন্ডিং:
KnockoutJS এর মধ্যে তিনটি প্রধান বৈশিষ্ট্য রয়েছে:
- Observables: এটি ডেটাকে ট্র্যাক করে এবং যখন ডেটার মান পরিবর্তিত হয় তখন UI আপডেট করে।
- Computed Observables: এটি এমন observables যা অন্য observables এর মানের উপর ভিত্তি করে মান গণনা করে।
- Bindings: HTML এবং ViewModel এর মধ্যে ডেটা-বাইন্ডিং তৈরি করার জন্য
data-bindব্যবহার করা হয়।
a. Observables:
Observables KnockoutJS এর মধ্যে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটা ট্র্যাক করে এবং যখন ডেটার মান পরিবর্তিত হয়, তখন UI এর রেন্ডারিং স্বয়ংক্রিয়ভাবে আপডেট করে।
function AppViewModel() {
this.name = ko.observable("John Doe"); // এটি একটি observable
}
এখানে this.name একটি observable যা পরবর্তীতে পরিবর্তিত হলে UI রিফ্রেশ হবে।
b. Computed Observables:
Computed Observables এমন একটি ফিচার যা অন্য observables এর মানের উপর ভিত্তি করে নতুন মান গণনা করে।
function AppViewModel() {
this.firstName = ko.observable("John");
this.lastName = ko.observable("Doe");
// Computed observable
this.fullName = ko.computed(() => {
return this.firstName() + " " + this.lastName();
});
}
এখানে fullName একটি computed observable, যা firstName এবং lastName এর মানের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে আপডেট হবে।
c. Bindings:
KnockoutJS তে data-bind এট্রিবিউট ব্যবহার করে HTML এলিমেন্টগুলোর সাথে ডেটা বেঁধে দেওয়া হয়।
<p data-bind="text: fullName"></p> <!-- এটি fullName কে HTML প্যারে প্রদর্শন করবে -->
<input type="text" data-bind="value: firstName, valueUpdate: 'input'" />
এখানে:
text: fullName: এটিfullNameobservable এর মানকে HTML প্যারে দেখাবে।value: firstName: এটি ইনপুট ফিল্ডেfirstNameobservable এর মান প্রদর্শন করবে এবং এটির মান পরিবর্তন হলেfirstNameআপডেট হবে।
3. আরও উন্নত KnockoutJS ফিচার:
a. Arrays এবং Loops:
KnockoutJS তে observable arrays এবং loops (যেমন: foreach) ব্যবহার করা যায়, যা ডাইনামিক ডেটার তালিকা প্রদর্শন করতে সহায়তা করে।
<ul data-bind="foreach: names">
<li data-bind="text: $data"></li>
</ul>
function AppViewModel() {
this.names = ko.observableArray(["John", "Jane", "Doe"]);
}
এখানে:
observableArrayব্যবহার করে ডেটার একটি তালিকা তৈরি করা হয়েছে, এবংforeachবায়ন্ডিং এর মাধ্যমে তা HTML এ প্রদর্শিত হচ্ছে।
b. Event Bindings:
KnockoutJS তে event bindings ব্যবহার করে বিভিন্ন UI ইভেন্টের উপর ভিত্তি করে কার্যক্রম চালানো যায়।
<button data-bind="click: changeName">Change Name</button>
function AppViewModel() {
this.name = ko.observable("John Doe");
// Click ইভেন্ট হ্যান্ডলার
this.changeName = () => {
this.name("Jane Doe");
};
}
এখানে click ইভেন্ট ব্যবহার করা হয়েছে, যখন ব্যবহারকারী বাটনে ক্লিক করবে তখন changeName ফাংশন কল হবে এবং নাম পরিবর্তিত হবে।
4. FuelPHP এ KnockoutJS ইন্টিগ্রেশন:
FuelPHP অ্যাপ্লিকেশনেও আপনি KnockoutJS ব্যবহার করতে পারেন। FuelPHP এর টেমপ্লেটিং ইঞ্জিন এবং ViewModel এর সাথে KnockoutJS ব্যবহার করে আপনি ডেটা-বাইন্ডিং এবং ডায়নামিক UI তৈরি করতে পারবেন।
FuelPHP ও KnockoutJS একত্রিত করার উদাহরণ:
- FuelPHP Controller:
class Controller_Home extends Controller
{
public function action_index()
{
$data = array(
'firstName' => 'John',
'lastName' => 'Doe',
);
return Response::forge(View::forge('home/index', $data));
}
}
- FuelPHP View (KnockoutJS):
<!-- fuel/app/views/home/index.php -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KnockoutJS with FuelPHP</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>
<h2>KnockoutJS Example with FuelPHP</h2>
<p>Full Name: <span data-bind="text: fullName"></span></p>
<input type="text" data-bind="value: firstName" />
<input type="text" data-bind="value: lastName" />
<script>
function AppViewModel() {
this.firstName = ko.observable("<?php echo $firstName; ?>");
this.lastName = ko.observable("<?php echo $lastName; ?>");
this.fullName = ko.computed(() => {
return this.firstName() + " " + this.lastName();
});
}
ko.applyBindings(new AppViewModel());
</script>
</body>
</html>
এখানে, FuelPHP Controller থেকে firstName এবং lastName ডেটা পাঠানো হচ্ছে, যা KnockoutJS এর মাধ্যমে ডেটা-বাইন্ডিং হয়ে UI তে প্রদর্শিত হচ্ছে।
KnockoutJS একটি শক্তিশালী লাইব্রেরি যা MVVM ডিজাইন প্যাটার্নে কাজ করে এবং data-binding এবং dependency tracking এর মাধ্যমে আপনার ওয়েব অ্যাপ্লিকেশনগুলির ইউজার ইন্টারফেস উন্নত করে। FuelPHP এর সাথে ইন্টিগ্রেট করে আপনি KnockoutJS এর ডেটা-বাইন্ডিং, কম্পিউটেড ভ্যালু, এবং অন্যান্য শক্তিশালী ফিচার ব্যবহার করতে পারেন। HTML ফাইলের মধ্যে KnockoutJS ইন্টিগ্রেশন করে, আপনি আপনার অ্যাপ্লিকেশনের ডাইনামিক ফিচারগুলি সহজেই ম্যানেজ করতে পারবেন।
Read more