In the preceding chapters, we explored Backbone's Models and Components, which together provide awesome infrastructure for managing data outside of the DOM. Sooner or later, however, every browser-based Web application must interact with the DOM: It is how we display data to the screen and receive input from the user. Thus, it should not surprise you that Backbone provides a component to help us organize the code we write in this area.

This last statement bears repeating: To help us organize the code we write.

Building a rich, coherent user interface for the Web is a big job, involving the close coordination of HTML, CSS, and JavaScript. Sometimes it is an enormous job. If you have previous experience with JavaScript application frameworks, you may expect Backbone to provide a widget toolkit, along the lines of Cappucino, Dojo, Google Web Toolkit (GWT), jQuery UI, Sencha, SproutCore, YUI, and many others. (And if you are starting to suspect that Backbone is not what you're looking for, hopefully this list will be of some use.) Under ideal circumstances, such toolkits can deliver a breathtaking user interface with minimal effort on your part.

It is understandable if you are disappointed at Backbone's reluctance to lend a hand with your UI. However, I beg you to remain open to the idea that Backbone's restraint in this area is one of the key strengths of the framework. How do I mean?

The rest of this chapter is part of the interactive book Backbone + CoffeeScript.