node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


This is a simple library that adds controller classes and parameter binding to express. It's really just a gimmick that I was tinkering with. I'm not sure if it's useful or even a remotely good idea.

Instead of just binding to a function, as is normal with express, dispatch lets you bind to a class and function.

Here's an example controller:

dispatch = require 'express-dispatch'
class ExampleController extends dispatch.Controller
  greet: (name) ->
    @response.send "Hello, #{name}!"
module.exports = ExampleController

Dispatch lets you connect a route pattern (like get /user/:userid or post /users) to an action method on a controller. Everything is connected up by name. Here's how we'd register our example controller to respond to GET requests at /greet:

express = require 'express'
dispatch = require 'express-dispatch'
controllers =
  test: ExampleController
routes =
  'get /greet': 'example.greet'
app = express()

Now, when someone GETs /greet, a new instance of ExampleController will be created, and its greet() function will be called with the arguments bound by name to query string parameters.

$ curl -XGET
Hello, Nate!

This also works with POSTs. If we changed our route to:

routes =
  'post /greet': 'example.greet'

Then we could do this:

$ curl -XPOST -d 'name=Nate'
Hello, Nate!

(Note that this requires using the bodyParser express middleware.)

For more information, check out the examples and tests.