Voglio suddividere i miei percorsi in diversi file, dove un file contiene tutti i percorsi e l'altro le azioni corrispondenti. Al momento ho una soluzione per raggiungere questo obiettivo, tuttavia devo rendere globale l'istanza dell'app per potervi accedere nelle azioni. La mia configurazione attuale è simile a questa:
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.
};
controller / index.js:
exports.posts = require('./posts');
exports.index = function(req, res) {
// code
};
controller / posts.js:
exports.index = function(req, res) {
// code
};
exports.show = function(req, res) {
// code
};
Tuttavia, questa configurazione ha un grosso problema: ho un database e un'istanza di app che devo passare alle azioni (controller / *. Js). L'unica opzione a cui potrei pensare è rendere globali entrambe le variabili, il che non è davvero una soluzione. Voglio separare le rotte dalle azioni perché ne ho molte e le voglio in una posizione centrale.
Qual è il modo migliore per passare le variabili alle azioni ma separare le azioni dai percorsi?