var express = require('express'); var fs = require('fs'); var log = require('log.js') module.exports = function(parent){ log.debug("Loading get :"); fs.readdirSync(__dirname + '/../routes').forEach(function(name){ // index.js in controller, with function as pages (views.py for django) var obj = require('./../routes/' + name + '/index'); // urls.js, just like django urls.py var urls = require('./../routes/' + name + '/urls'); name = obj.name || name; var app = express(); // allow specifying the view engine if (obj.engine) app.set('view engine', obj.engine); app.set('views', __dirname + '/../routes/' + name + '/views'); // generate routes based // on the exported methods log.debug(' ' + name + ':'); for (var key in urls) { app.get(key, ((key) => function(req, res, next) { var path = obj[urls[key]](req, res, function(view) { res.render( __dirname + '/../routes/' + name + '/views/' + view, res.locals, function(err, out) { if (err !== null) { log.pugerror(err); } res.send(out); } ); }, next); })(key)); log.debug(' ' + key + ' -> ' + name + '.' + urls[key]); } log.debug(); // mount the app parent.use(app); }); };