

Monkey Patching in Node.js - sek
http://sekistner.com/2013/08/03/monkey-patching-in-node-js/

======
joshguthrie
Express offers something similar to organize/simplify your routing:

    
    
        var express = require('express');
        var appRoot = express();
        var appFoobar = express();
        appFoobar.get('/bar', function (req, res) { res.end('/foo/bar'); });
    
        appRoot.use('/foo', appFoobar);
        appRoot.listen(process.env.PORT);
    
        $ curl localhost:3000/foo/bar
        /foo/bar
        $
    

As for "monkey patching", overwriting methods is often a bad idea. It may be
better to use a new method to call upon the old one:

    
    
        Hapi.Server.prototype.routeAPI = function (routes) {
         if (!Array.isArray(routes)) routes = [ routes ];
         routes = routes.map(function (route) {
           route.path = '/api' + route.path;
           return route;
         });
         return this.route(routes);
        }
    

Like nadadiv said, you could even have gone without recreating a Server()
instance each time.

~~~
nadaviv
There's also an express library that I wrote some time ago that allows you to
create subroutes without using subapps:

[https://github.com/shesek/express-
subroute](https://github.com/shesek/express-subroute)

------
amasad
FYI - no need for underscore if you're only targeting node.js. You can use
Array.isArray and routes.map instead of _.isArray and _.map

------
nadaviv
> server.route = new Hapi.Server().route;

Seems wasteful to create an instance only to get a property, when you can just
use `Hapi.Server.prototype.route` instead

~~~
sek
True, is the de facto standard super call in js.

Changed it

