express-route-controller

A helper function to assign controller actions to routes in express

Usage no npm install needed!

<script type="module">
  import expressRouteController from 'https://cdn.skypack.dev/express-route-controller';
</script>

README

express-route-controller

This is a helper function to assign controller actions to routes in express (Not sure if it works with connect as well).

It provides just a tiny bit of structure on top of a normal express app, but also doesn't get in the way at all, and you can continue to use express normally and define even more routes manually if you wish.

Usage:

In your express project install express-route-controller:

npm install express-route-controller

Now create a folder where you want all your controllers, eg. controllers, and add a file in there, named mycontroller.js. Then define it somehow, like so:

module.exports = {
    myaction: function(req, res) {
    },
    myotheraction: function(req, res) {
    }
};

In your main app.js file (or wherever you set up express routes normally) simply call the helper function (very sparse demo express app):

var express = require('express');
var app = express();
var erc = require('express-route-control');

// set up express route control:
erc(app, {
    controllers: __dirname + '/controllers',
    routes: {
        '/fetch_hotdogs': 'mycontroller#myaction',
        '/save_hotdogs': { action: 'mycontroller#myotheraction, method: 'post' }
    }
});

app.listen(3000);

You can make this even more easier, by defining your routes in a routes.json file, like so:

{
    "/fetch_hotdogs": "mycontroller#myaction",
    "/save_hotdogs": { "action": "mycontroller#myotheraction, "method": "post" }
}

And loading the routes is as simple as:

...

erc(app, {
    controllers: __dirname + '/controllers',
    routes: require('routes.json')
});

...

Feedback

Pull requests, feature ideas and bug reports are welcome

License

MIT