backbone-route-control adds support for controller#action style syntax to Backbone's router.
This facilitates route callbacks to be defined in separate controller/handler objects, helping to keep your router slim. This separation of concerns can also aid greatly in the maintainability and testability of these classes.
npm install backbone-route-control
or
bower install backbone-route-control
Create a router class, that extends from BackboneRouteControl.
var Router = BackboneRouteControl.extend({});
Define and organize your routes, using the controller#action syntax.
var Router = BackboneRouteControl.extend({
routes: {
'foo': 'foo#index',
'foo/new': 'foo#form',
'foo/:id': 'foo#show',
'foo/:id/edit': 'foo#form',
'whatever': 'whatever'
},
whatever: function() {}
});
Note that you can still define methods directly in the router and use the normal Backbone syntax as well.
Create controller classes, to match your route organization. These can be simple JavaScript objects or really whatever you like. I suggest to create them as functions so that you may inject options or dependencies.
var FooController = function(options) {
return {
index: function() {},
show: function(id) {},
form: function(id) {}
};
};
Instantiate your router, passing in a hash of controllers.
var router = new Router({
controllers: {
foo: new FooController()
}
});
grunt
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
- 0.1.0 Initial release