Quero dividir minhas rotas em arquivos diferentes, onde um arquivo contém todas as rotas e o outro as ações correspondentes. Atualmente tenho uma solução para conseguir isso, porém preciso tornar a instância do aplicativo global para poder acessá-la nas ações. Minha configuração atual é assim:
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');
});
routes.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
};
No entanto, essa configuração tem um grande problema: eu tenho um banco de dados e uma instância de aplicativo que preciso passar para as ações (controladores / *. Js). A única opção que eu poderia pensar é tornar as duas variáveis globais, o que não é realmente uma solução. Quero separar as rotas das ações porque tenho muitas rotas e as quero em um local central.
Qual é a melhor maneira de passar variáveis para as ações, mas separar as ações das rotas?