Cuando haces un proyecto con ExpressJS desde 0 y empiezas a definir carpetas una importante es controllers, dentro de controllers podemos tener varios archivos.

controllers
    - pages.js
    - users.js
    - other.js

Para cargar todos estos archivos de forma automática lo que haríamos es crear un archivo llamado index.js dentro de la carpeta controllers con el contenido siguiente:

var pages = require('./pages.js');
var users = require('./users.js');
var other = require('./other.js');

export.pages = pages;
export.users = users;
export.other = other;

A medida que agregamos más controladores se vuelve una tarea que nos puede hacer perder tiempo.

La mejor práctica sería que en el archivo index.js carguemos los archivos de forma automática:

/**
 * @description Read all files and make export for file
 * ignoring index file.
 * @type {exports}
*/
var fs = require('fs');
var path = require('path');

var files = fs.readdirSync(__dirname);

files.forEach(function(file) {
    var fileName = path.basename(file, '.js');

    if (fileName !== 'index') {
        exports[fileName] = require('./' + fileName);
    }
});

Entonces en el archivo app.js o route.js agregaríamos una sola carga así:

var controllers = require('./controllers');

Para cargar en las rutas sería así:

app.get('/pages', controllers.pages.index);
app.get('/users', controllers.users.index);
app.get('/other', controllers.other.index);

Con esta practica no perdemos tiempo de agregar la carga de cada controlador.

Otra alternativa es usar https://www.npmjs.org/package/express-enrouten.

Con express-enrouten se trabaja con archivos dentro de directorios.

var express = require('express');
var enrouten = require('express-enrouten');

var app = express();

app.use(enrouten({directory: 'controllers'}));

Donde controllers sería el directorio donde estarían los controladores.

La estructura de archivos sería sí:

controllers
    |-user
        |-create.js

// create.js
module.exports = function (router) {
    router.post('/', function (req, res) {
        res.send('ok');
    });
};

Ahora tendríamos disponible la ruta:

/user/create

Y nos imprimiría un ok.

Con express-enrouten te ahorras más tiempo y tienes un archivos distintos la definiciones de las rutas (y no todo en app.js).

KrakenJS utiliza el módulo express-enrouten para el manejo de rutas.

Fuente: http://www.nodenica.com/training/cargar-controladores-de-forma-automatica-en-expressjs-con-nodejs