Backbone.js
Lightweight JavaScript framework for structuring web applications with MVC pattern, offering RESTful synchronization and event-driven architecture.
Updated on March 30, 2026
Backbone.js is a minimalist JavaScript framework created in 2010 by Jeremy Ashkenas, designed to provide structure to client-side web applications. Based on the Model-View-Presenter (MVP) pattern, it offers essential components like models, collections, views, and routers to organize code in a maintainable way. At only 8 KB compressed, Backbone remains relevant for projects requiring lightweight and flexible solutions without enforcing strict opinions.
Fundamentals
- MVP architecture with clear separation between data (Models), interface (Views), and navigation (Routers)
- Automatic synchronization with RESTful APIs via standard HTTP methods (GET, POST, PUT, DELETE)
- Robust event system enabling decoupled communication between components
- Single dependency on Underscore.js (or Lodash) for functional utilities
Benefits
- Minimal footprint (8 KB) ideal for performance-constrained applications
- Gentle learning curve thanks to simple, well-documented API
- Total flexibility: no imposed opinions on templating or state management
- Mature ecosystem with numerous plugins (Marionette, Thorax) for advanced features
- Easy interoperability with third-party libraries (jQuery, Handlebars, Mustache)
Practical Example
// Model representing a task
const Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
},
toggle: function() {
this.save({ completed: !this.get('completed') });
}
});
// Collection of tasks with REST URL
const TodoList = Backbone.Collection.extend({
model: Todo,
url: '/api/todos',
completed: function() {
return this.filter(todo => todo.get('completed'));
}
});
// View to display a task
const TodoView = Backbone.View.extend({
tagName: 'li',
template: _.template('<%= title %> <button>Delete</button>'),
events: {
'click button': 'clear'
},
initialize: function() {
this.listenTo(this.model, 'change', this.render);
this.listenTo(this.model, 'destroy', this.remove);
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
clear: function() {
this.model.destroy();
}
});
// Initialization
const todos = new TodoList();
todos.fetch(); // Loads from /api/todosImplementation
- Install Backbone.js and dependencies (Underscore.js) via npm or CDN
- Define models representing business entities with validation and business logic
- Create collections to manage groups of models with sorting and filtering
- Develop views responsible for DOM rendering and user event handling
- Configure router to handle navigation and application state via URLs
- Implement synchronization with backend API by customizing Backbone.sync if needed
- Optimize performance with memoization techniques and view memory management
Professional tip
For complex projects, use Marionette.js as a layer on top of Backbone. This library adds advanced components (CompositeView, Regions) that reduce boilerplate code by 40% while preserving Backbone's minimalist philosophy. Perfect for maintaining lightweight architecture while gaining structure.
Related Tools
- Marionette.js: complementary framework adding components and architectural patterns
- Backbone.localStorage: adapter for local persistence without backend
- Chaplin: opinionated application architecture based on Backbone
- BackboneRails: Ruby gem facilitating integration with Rails applications
- Backbone.Validation: plugin for declarative model validation
- Handlebars/Mustache: templating engines frequently used with Backbone
While less popular compared to React or Vue, Backbone.js maintains relevance for applications requiring full control and minimal footprint. Its non-prescriptive approach enables progressive integration into existing projects without complete refactoring. For teams valuing simplicity and technical mastery, Backbone offers a solid foundation avoiding unnecessary complexity of modern frameworks.
Let's talk about your project
Need expert help on this topic?
Our team supports you from strategy to production. Let's chat 30 min about your project.

