BackboneJS একটি মডেল-ভিউ-কলেকশন (MVC) ভিত্তিক JavaScript ফ্রেমওয়ার্ক, যেখানে Model একটি গুরুত্বপূর্ণ অংশ। Model এর মাধ্যমে অ্যাপ্লিকেশনের ডেটা এবং লজিক পরিচালিত হয়। BackboneJS এর Model ব্যবহার করে আপনি ডেটা সংরক্ষণ, ম্যানিপুলেট এবং সিঙ্ক্রোনাইজ করতে পারেন।
Model এর কাজ
BackboneJS এর Model এর মূল কাজ হলো ডেটা সংরক্ষণ এবং সেই ডেটার উপর বিভিন্ন কার্যকলাপ সম্পাদন করা। Model সাধারণত অ্যাপ্লিকেশনের ডেটা, তার বৈশিষ্ট্য, এবং সেই ডেটার সাথে সম্পর্কিত লজিক সংরক্ষণ করে।
Model এর কিছু মূল কাজ:
- ডেটা সংরক্ষণ: Model ডেটা ধারণ করে, যেমন একটি পণ্য বা ব্যবহারকারীর তথ্য।
- ডেটা বৈধকরণ: Model এর মধ্যে ডেটা বৈধকরণের জন্য কিছু নিয়ম নির্ধারণ করা যায় (যেমন, নাম ফিল্ডের জন্য সর্বনিম্ন দৈর্ঘ্য চেক করা)।
- ডেটা আপডেট: Model এর ডেটা পরিবর্তন করা হলে, এটি নিজে থেকেই ভিউ বা অন্য যে কোনো সংশ্লিষ্ট অংশকে আপডেট করতে পারে।
- RESTful API সিঙ্ক্রোনাইজেশন: Model ব্যবহার করে অ্যাপ্লিকেশনটি RESTful API এর মাধ্যমে সার্ভারের সাথে ডেটা পাঠানো এবং গ্রহণ করা যায়।
Model তৈরি করা
BackboneJS এ একটি Model তৈরি করতে Backbone.Model কে এক্সটেন্ড করা হয়। নিচে একটি Model এর উদাহরণ দেওয়া হলো:
var Book = Backbone.Model.extend({
defaults: {
title: 'Unknown Title',
author: 'Unknown Author',
year: 2000
},
// ডেটা আপডেট করার জন্য একটি মেথড
updateTitle: function(newTitle) {
this.set('title', newTitle);
}
});
// নতুন Book মডেল ইনস্ট্যান্স তৈরি
var myBook = new Book({ title: 'BackboneJS for Beginners', author: 'John Doe', year: 2024 });
// মডেল থেকে ডেটা নেওয়া
console.log(myBook.get('title')); // Output: BackboneJS for Beginners
// মডেলের ডেটা আপডেট করা
myBook.updateTitle('Advanced BackboneJS');
console.log(myBook.get('title')); // Output: Advanced BackboneJS
এই কোডে:
defaultsঅবজেক্টটি মডেলের জন্য ডিফল্ট মান নির্ধারণ করে।updateTitleমেথডটি মডেলের টাইটেল পরিবর্তন করতে ব্যবহৃত হয়।get()এবংset()মেথডের মাধ্যমে মডেলের ডেটা অ্যাক্সেস এবং আপডেট করা যায়।
Model এর ডেটা সংরক্ষণ
BackboneJS এর Model এর মাধ্যমে ডেটা সংরক্ষণ করা যায় যা খুব সহজ এবং শক্তিশালী। Model একটি বিশেষভাবে কনফিগার করা ডেটা অবজেক্ট হিসেবে কাজ করে, যেখানে:
- set(): ডেটা আপডেট বা সংরক্ষণ করতে ব্যবহৃত হয়।
- get(): সংরক্ষিত ডেটা থেকে মান (value) নিয়ে আসে।
- save(): মডেলের ডেটা সার্ভারে পাঠাতে ব্যবহৃত হয় (বিশেষত REST API এর মাধ্যমে)।
Model এ ডেটা সংরক্ষণ এবং সিঙ্ক্রোনাইজেশন:
var User = Backbone.Model.extend({
urlRoot: '/api/users', // API URL যেটি ডেটা সিঙ্ক্রোনাইজেশন করে
defaults: {
name: 'Anonymous',
age: 0
}
});
// একটি User মডেল তৈরি
var user = new User({ name: 'John Doe', age: 30 });
// মডেলটি সার্ভারে সেভ করা
user.save(); // এটি RESTful API কল করবে
// ডেটা অ্যাক্সেস করা
console.log(user.get('name')); // Output: John Doe
console.log(user.get('age')); // Output: 30
উপরের উদাহরণে:
- urlRoot: একটি নির্দিষ্ট API এর URL যা এই মডেলটি সার্ভারের সাথে সিঙ্ক্রোনাইজ করতে ব্যবহার করবে।
- save(): মডেলটি POST অথবা PUT HTTP মেথড ব্যবহার করে API তে ডেটা পাঠাতে পারে।
Model এর ইভেন্ট হ্যান্ডলিং
BackboneJS এ Model নিজেই কিছু ইভেন্ট ট্রিগার করতে পারে। Model এর change ইভেন্টটি তখন ট্রিগার হয় যখন মডেলের কোনো ডেটা পরিবর্তিত হয়। আপনি এই ইভেন্টগুলো লিসেন করে ডেটার পরিবর্তন ট্র্যাক করতে পারেন।
var Product = Backbone.Model.extend({
defaults: {
name: 'Product Name',
price: 0
}
});
var myProduct = new Product({ name: 'Laptop', price: 1000 });
// 'change' ইভেন্ট ট্রিগার করা
myProduct.on('change', function() {
console.log('Product details changed');
});
// মডেলের ডেটা পরিবর্তন
myProduct.set('price', 1200); // Output: Product details changed
এখানে, মডেল পরিবর্তন হওয়ার পর একটি ইভেন্ট ট্রিগার হয় এবং আমরা সেই ইভেন্টের ওপর মনিটরিং করি।
Model এর বৈধকরণ (Validation)
BackboneJS এ Model এর ডেটার জন্য validation প্রদান করা যেতে পারে, যা নিশ্চিত করে যে ডেটার মান সঠিক কিনা। যদি ডেটা অকার্যকর হয়, তবে Model এর invalid ইভেন্ট ট্রিগার হবে।
var Person = Backbone.Model.extend({
defaults: {
name: 'Anonymous',
age: 0
},
validate: function(attrs) {
if (attrs.age < 0) {
return "Age cannot be negative.";
}
}
});
// অবৈধ ডেটা সহ মডেল তৈরি
var invalidPerson = new Person({ name: 'John', age: -5 });
invalidPerson.on('invalid', function(model, error) {
console.log(error); // Output: Age cannot be negative.
});
এখানে, যখন age ফিল্ডটি নেগেটিভ ভ্যালু হবে, তখন invalid ইভেন্ট ট্রিগার হবে এবং আমরা সেটি ক্যাচ করে একটি এরর বার্তা প্রদর্শন করব।
সারাংশ
BackboneJS এর Model ডেটা সংরক্ষণের জন্য একটি অত্যন্ত গুরুত্বপূর্ণ অংশ। Model এর মাধ্যমে:
- আপনি ডেটা আপডেট, অ্যাক্সেস, এবং সেভ করতে পারবেন।
- ডেটা বৈধকরণ এবং ইভেন্ট হ্যান্ডলিং করতে পারবেন।
- মডেল এবং সার্ভারের মধ্যে সিঙ্ক্রোনাইজেশন পরিচালনা করা যায়।
এটি BackboneJS এর MVC আর্কিটেকচারে ডেটার মূল কাঠামো হিসেবে কাজ করে এবং অ্যাপ্লিকেশনের ডেটার অবস্থা পরিচালনা করতে সাহায্য করে।
Read more