Quiero dividir mis rutas en diferentes archivos, donde un archivo contiene todas las rutas y el otro las acciones correspondientes. Actualmente tengo una solución para lograr esto, sin embargo, necesito hacer que la instancia de la aplicación sea global para poder acceder a ella en las acciones. Mi configuración actual se ve así:
app.js:
var express = require('express');
var app = express.createServer();
var routes = require('./routes');
var controllers = require('./controllers');
routes.setup(app, controllers);
app.listen(3000, function() {
console.log('Application is listening on port 3000');
});
route.js:
exports.setup = function(app, controllers) {
app.get('/', controllers.index);
app.get('/posts', controllers.posts.index);
app.get('/posts/:post', controllers.posts.show);
// etc.
};
controladores / index.js:
exports.posts = require('./posts');
exports.index = function(req, res) {
// code
};
controladores / posts.js:
exports.index = function(req, res) {
// code
};
exports.show = function(req, res) {
// code
};
Sin embargo, esta configuración tiene un gran problema: tengo una base de datos y una instancia de aplicación que necesito pasar a las acciones (controladores / *. Js). La única opción que se me ocurre es hacer que ambas variables sean globales, lo cual no es realmente una solución. Quiero separar las rutas de las acciones porque tengo muchas rutas y las quiero en un lugar central.
¿Cuál es la mejor manera de pasar variables a las acciones pero separar las acciones de las rutas?