Chapter 3. Backbone.js

Backbone.js is a Model-View-Controller (MVC) framework for client-facing JavaScript. Anyone who has spent time working with JavaScript projects larger than trivial in size has seen how quickly the language spirals into a web of callbacks and pyramid code. When writing code for the web browser, it is almost inevitable to find display-specific code leaking its way into your application logic. Over time, the code mix becomes heavier and harder to maintain. Changes to the domain logic affect the view and vice versa.

Backbone aims to solve the code coupling problem by providing a model-view framework with templates that separate programming concerns in a way that should feel familiar to developers coming from either a desktop application or server side programming background.

It isn’t possible to talk about Backbone without also discussing Underscore.js, Backbone’s prerequisite helper library. Underscore provides functional programming support in the form of utility functions like map/reduce, array iteration and filtering, and advanced object binding and chaining. jQuery or Zepto, although not strictly required, are supported by Backbone. jQuery in particular will play a role in the application developed over the course of this book.


Models form the nucleus of your Backbone application. Although models may be transient app-only creations, in most cases the model will represent an object stored in a database.

Backbone’s philosophy has models responsible for storing, ...

Get Building Node Applications with MongoDB and Backbone now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.