backbone-route-control

0.1.0 • Public • Published

backbone-route-control

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.

Installation

npm install backbone-route-control

or

bower install backbone-route-control

Usage

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()
  }
});

Tests

grunt

Contributing

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.

Release History

  • 0.1.0 Initial release

/backbone-route-control/

    Package Sidebar

    Install

    npm i backbone-route-control

    Weekly Downloads

    28

    Version

    0.1.0

    License

    MIT

    Last publish

    Collaborators

    • brentertz