Web uygulamaları için yapı taşı sağlayan, modelleri, görünümleri, koleksiyonları ve yönlendiricileri ile öne çıkan hafif bir JavaScript kütüphanesi.
Models, Views, Collections ve Routers ile istemci tarafı uygulamalara yapısal bir düzen getirir.
REST API'leri ile senkronizasyon (sync) işlemleri arka planda sorunsuz çalışacak şekilde tasarlanmıştır.
Sadece 7.6kb boyutunda, projenize yön veren hafif ama güçlü bir iskelet sunar.
Özelleştirilebilir olay (event) sistemi ile nesneler arası haberleşmeyi oldukça kolaylaştırır.
Veri manipülasyonu için zengin fonksiyon setine sahip Underscore.js'in gücünden yararlanır.
Uygulama içi yönlendirmeler için hem Hash tabanlı hem de pushState özellikli yönlendirme (routing) desteği.
Bir Backbone Modeli oluşturup veriyi değiştirdiğimizde (set), olay dinleyicisinin (change event) tetiklenmesi.
const User = Backbone.Model.extend({
defaults: { name: 'Misafir', role: 'Kullanıcı' }
});
const user = new User();
user.on('change', function() {
console.log('Model değişti!', user.toJSON());
});
user.set({ name: 'Admin', role: 'Yönetici' });
Backbone Koleksiyonu (Collection) ve Görünümü (View) ile basit bir liste yapısı.
const Todo = Backbone.Model.extend({ defaults: { title: '', completed: false } });
const TodoList = Backbone.Collection.extend({ model: Todo });
const todos = new TodoList();
const AppView = Backbone.View.extend({
el: '#todo-list',
initialize: function() {
this.listenTo(todos, 'add', this.render);
},
render: function() {
this.$el.html('');
todos.each(todo => {
this.$el.append(`${todo.get('title')}`);
});
return this;
}
});
Hash (#) tabanlı navigasyon ile sayfalar arası geçişin simülasyonu.
Koleksiyonların dışarıdan veri çekmesi (fetch) ve Backbone'un bunu modeller ile eşleştirmesi.
const PostCollection = Backbone.Collection.extend({
url: 'https://jsonplaceholder.typicode.com/posts?_limit=3'
});
const posts = new PostCollection();
posts.fetch({
success: function(collection) {
console.log(collection.toJSON());
}
});
Mevcut birçok büyük ölçekli ve yıllanmış projede (örneğin eski Trello veya Soundcloud sürümleri) Backbone izlerine rastlayabilirsiniz.
Yalnızca jQuery ile yazılmış spagetti kodları düzenlemek ve bir MVC düzeni kurmak için idealdir.
Yüzlerce kilobaytlık modern frameworklerin fazla geleceği küçük projelerde iskelet kurmayı sağlar.