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

    Install

    npm i backbone-route-control

    DownloadsWeekly Downloads

    15

    Version

    0.1.0

    License

    MIT

    Last publish

    Collaborators

    • brentertz