Backbone.js is a lightweight framework that lets us create single page applications in a structured manner. It is based on the Model-View-Controller (MV*) pattern. It is best suited for creating single page applications using a RESTful service for persisting data.

There's a number of pubsub libraries for JavaScript out there. If you're using Backbone, they're all a waste of time. The Backbone object itself works as an event hub that your components (views, models, collections, etc) can listen on, and since that object will always be visible to pretty much every component you write, there's no reason why you'd step out of it.

Backbone views provide a useful convention and abstraction for user interfaces. However, to include UI functionality in your app that Backbone, on its own, was not designed to support, you’ll need to consider how to effectively integrate custom or third-party functionality into your Backbone app.