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.

Features

  • 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.

License

Backbone.js is licensed under Open Source MIT license.

Resources

Backbone Boilerplatte by Thomas Davis https://github.com/thomasdavis/backboneboilerplate

Backbone JS tutorial by Jeremy Ashkenas http://documentcloud.github.com/backbone/docs/backbone.html

Backbone tutorial by Artur Adib http://arturadib.com/hello-backbonejs/

Sample App with Backbone.js and Twitter Bootstrap by Christophe Coenraets http://coenraets.org/blog/2012/02/sample-app-with-backbone-js-and-twitter-bootstrap/

Give Your Apps a Backbone(.js) by Joe Zim http://www.joezimjs.com/javascript/give-your-apps-a-backbone-js/

Backbone.js: TDD with Jasmine by Łukasz Bandzarewicz http://blog.bandzarewicz.com/blog/2012/03/08/backbone-dot-js-tdd-with-jasmine-part-one-the-model/