Backbone.js does not focus on either DOM manipulation like jQuery or making JavaScript more C-like but plays along by giving structure to application providing model, view and allowing simple binding between those two. It’s not a true Model View Controller model but it’s not Backbones imperfection but rather advantage. Thanks to its implementation framework allows to separate the model (data) of your application from the way it should be displayed (View) encouraging template reuse and proper application architecture.


  • Models contain interactive data and large part of the logic surrounding them like conversion, validation, computed properties and access controll.
  • Views are not what you would expect from MVC framework. They are rather convention which allows to organize your views into logical units that can be updated independently of the model.
  • Routers can be considered as controllers which bind models and views together. They provide means for routing client-side pages and connecting them to actions and events. Backbone.js Routers make use of History API in modern browsers with gentle fallback for older browsers.
  • Collections are ordered sets of models to which developer can bind events. Whenever collection is modified Backbone may notify views about the change.
  • Underscore is utility library for JavaScript providing many useful functions making JavaScript development easier.


Backbone.js is licensed under Open Source MIT license.


Backbone Boilerplatte by Thomas Davis

Backbone JS tutorial by Jeremy Ashkenas

Backbone tutorial by Artur Adib

Sample App with Backbone.js and Twitter Bootstrap by Christophe Coenraets

Give Your Apps a Backbone(.js) by Joe Zim

Backbone.js: TDD with Jasmine by Łukasz Bandzarewicz