BackboneJS তে Sync হলো একটি অত্যন্ত গুরুত্বপূর্ণ কনসেপ্ট যা মডেল, কালেকশন এবং সার্ভারের মধ্যে ডেটা সিঙ্ক্রোনাইজ করার জন্য ব্যবহৃত হয়। এটি Backbone এর ডিফল্ট ইমপ্লিমেন্টেশন ব্যবহার করে RESTful API এর মাধ্যমে ডেটা লোড ও সেভ করে। BackboneJS মডেল এবং কালেকশনে ডেটা লোড ও সেভ করার জন্য sync মেথড ব্যবহার করা হয়।
1. Backbone.sync মেথডের ভূমিকা
BackboneJS এর sync() মেথডের মাধ্যমে আপনি মডেল বা কালেকশন থেকে ডেটা সার্ভারে পাঠানো (সেভ করা) অথবা সার্ভার থেকে ডেটা লোড করার কাজ করতে পারেন। এটি create, read, update, এবং delete (CRUD) অপারেশনগুলো সম্পাদন করার জন্য ব্যবহৃত হয়।
ডিফল্টভাবে, Backbone REST প্রোটোকল ব্যবহার করে, যার মাধ্যমে HTTP মেথডগুলি (GET, POST, PUT, DELETE) সার্ভার ইন্টারঅ্যাকশন পরিচালনা করে।
2. Backbone.sync এর মাধ্যমে ডেটা লোড এবং সেভ করা
2.1 Model এর মাধ্যমে ডেটা লোড এবং সেভ করা
Backbone মডেল দিয়ে ডেটা সেভ ও লোড করার জন্য বিভিন্ন মেথড রয়েছে, যেমন save() এবং fetch()। এগুলো sync মেথডের উপর নির্ভর করে কাজ করে।
2.1.1 Model থেকে ডেটা লোড করা (fetch)
fetch() মেথডটি সার্ভার থেকে মডেলটির ডেটা লোড করার জন্য ব্যবহৃত হয়। এটি একটি HTTP GET রিকুয়েস্ট সার্ভারে পাঠায় এবং মডেলের ডেটা আপডেট করে।
var Book = Backbone.Model.extend({
urlRoot: '/books' // URL রুট সেট করা
});
var myBook = new Book({ id: 1 });
// সার্ভার থেকে ডেটা লোড করা
myBook.fetch({
success: function(model, response) {
console.log('Data loaded successfully:', response);
},
error: function(model, response) {
console.log('Error loading data:', response);
}
});
এখানে:
urlRootমডেলের জন্য সার্ভারের রুট URL নির্ধারণ করে, যেখানে ডেটা লোড হবে।fetch()মেথড HTTP GET রিকুয়েস্ট পাঠায় এবং মডেলের ডেটা আপডেট করে।
2.1.2 Model এ ডেটা সেভ করা (save)
save() মেথডটি মডেলের ডেটা সার্ভারে সেভ করার জন্য ব্যবহৃত হয়। এটি একটি HTTP POST বা PUT রিকুয়েস্ট পাঠায় (ডেটা যদি নতুন হয় তবে POST, আর যদি আপডেট হয় তবে PUT)।
var Book = Backbone.Model.extend({
urlRoot: '/books'
});
var myBook = new Book({ id: 1, title: 'BackboneJS for Beginners', author: 'John Doe' });
// ডেটা সার্ভারে সেভ করা
myBook.save(null, {
success: function(model, response) {
console.log('Data saved successfully:', response);
},
error: function(model, response) {
console.log('Error saving data:', response);
}
});
এখানে:
save()মেথডটি সার্ভারে ডেটা সেভ করার জন্য ব্যবহৃত হয়।- মডেলটির ডেটা যদি নতুন হয়, তবে এটি POST রিকুয়েস্ট পাঠাবে, আর যদি মডেলটি ইতিমধ্যে সার্ভারে থাকে, তবে এটি PUT রিকুয়েস্ট পাঠাবে।
2.2 Collection এর মাধ্যমে ডেটা লোড এবং সেভ করা
BackboneJS তে Collection একটি গ্রুপ অব মডেল এর সমষ্টি। এটি মডেলগুলোকে পরিচালনা করতে সাহায্য করে এবং সেই মডেলগুলোর ডেটা লোড ও সেভ করার জন্যও sync ব্যবহার করা হয়।
2.2.1 Collection থেকে ডেটা লোড করা (fetch)
fetch() মেথডটি কালেকশনের সমস্ত মডেলের ডেটা সার্ভার থেকে লোড করতে ব্যবহৃত হয়। এটি HTTP GET রিকুয়েস্ট পাঠায় এবং সমস্ত মডেলকে আপডেট করে।
var Book = Backbone.Model.extend({
urlRoot: '/books'
});
var Books = Backbone.Collection.extend({
model: Book,
url: '/books' // সমস্ত বইয়ের ডেটা লোড করতে URL সেট করা
});
var myBooks = new Books();
// সার্ভার থেকে সমস্ত বইয়ের ডেটা লোড করা
myBooks.fetch({
success: function(collection, response) {
console.log('Books loaded successfully:', response);
},
error: function(collection, response) {
console.log('Error loading books:', response);
}
});
এখানে:
urlএর মাধ্যমে সমস্ত বইয়ের ডেটা লোড করার জন্য URL সেট করা হয়েছে।fetch()কল করে সমস্ত মডেলের ডেটা সার্ভার থেকে লোড করা হয়েছে।
2.2.2 Collection এ ডেটা সেভ করা (create)
কালেকশনে নতুন মডেল যুক্ত করার জন্য create() মেথড ব্যবহার করা হয়। এটি একটি HTTP POST রিকুয়েস্ট পাঠায় নতুন মডেল সার্ভারে সেভ করার জন্য।
var Book = Backbone.Model.extend({
urlRoot: '/books'
});
var Books = Backbone.Collection.extend({
model: Book,
url: '/books'
});
var myBooks = new Books();
// নতুন বই তৈরি করে কালেকশনে যোগ করা
myBooks.create({ title: 'BackboneJS for Beginners', author: 'John Doe' }, {
success: function(model, response) {
console.log('Book created successfully:', response);
},
error: function(model, response) {
console.log('Error creating book:', response);
}
});
এখানে:
create()মেথডটি একটি নতুন বই (মডেল) তৈরি করে এবং সেই বইটি কালেকশনে যুক্ত করে। এটি POST রিকুয়েস্ট পাঠায়।
3. Custom Sync মেথড ব্যবহার
BackboneJS তে ডিফল্ট sync() মেথড ব্যবহার করা হয়, কিন্তু আপনি যদি সার্ভারের API বা অন্যান্য নেটওয়ার্ক ইন্টারঅ্যাকশনের জন্য কাস্টম সিঙ্ক মেথড তৈরি করতে চান, তবে আপনি নিজের sync() মেথড তৈরি করতে পারেন।
var Book = Backbone.Model.extend({
urlRoot: '/books',
// কাস্টম sync মেথড
sync: function(method, model, options) {
if (method === 'read') {
// GET রিকুয়েস্টের জন্য কাস্টম কোড
console.log('Fetching data with custom sync');
}
// অন্যান্য CRUD অপারেশনের জন্য কাস্টম লজিক
return Backbone.sync.apply(this, arguments);
}
});
var myBook = new Book({ id: 1 });
myBook.fetch();
এখানে:
sync()মেথডটি কাস্টমভাবে ওভাররাইড করা হয়েছে যাতে সার্ভারের সাথে ইন্টারঅ্যাকশন করার আগে কিছু বিশেষ লজিক সম্পাদন করা যায়।
সারাংশ
BackboneJS এর sync মেথড ডেটা লোড ও সেভ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি মডেল এবং কালেকশনের মাধ্যমে সার্ভারের সাথে ইন্টারঅ্যাকশন করতে ব্যবহৃত হয়, এবং fetch(), save(), create() ইত্যাদি মেথডের মাধ্যমে ডেটা সার্ভার থেকে লোড বা সেভ করা হয়। ডিফল্টভাবে, BackboneJS RESTful API ব্যবহার করে HTTP রিকুয়েস্ট পাঠায়, তবে আপনি চাইলে কাস্টম sync মেথড ব্যবহার করে সার্ভারের ইন্টারঅ্যাকশন কাস্টমাইজও করতে পারেন।
Read more