5 ms·
Monkey Patching in Node.js
- amasad 13y agoFYI - no need for underscore if you're only targeting node.js. You can use Array.isArray and routes.map instead of _.isArray and _.map
- deleted 13y ago[deleted]
- nadaviv 13y ago> 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 13y agoTrue, is the de facto standard super call in js. Changed it
- deleted 13y ago[deleted]
- joshguthrie 13y agoExpress 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.
- sek 13y agoYeah unfortunately hapi didn't, but this was one of the rare cases when it's not superior to express. I probably take it out once I am out of development so all the route methods stay untouched.
- nadaviv 13y agoThere'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