The problem with passing in your routes when you create a Router
is that you have to supply all the routing functions together with your routes, which (especially if you have a lot of routes on your site) can easily become messy. Instead, many Backbone programmers define their routes on the Router
class itself, as shown here:
var SiteRouter = Backbone.Router.extend({ routes: { 'foo': 'fooRoute' }, fooRoute: function() { // logic for the "/foo" or "#foo" route would go here } }); var siteRouter = new SiteRouter(); Backbone.History.start(); // siteRouter won't work without this
As you can see, this approach simplifies the routes' definition and makes them more similar to the events
properties of Models
and Collections
. Instead of defining routing methods with the routes themselves, you can simply give the route the name of a routing method and Backbone will look for that method inside the Router
class.
There is also a third way to add routes and that...