Chcę podzielić moje trasy na różne pliki, z których jeden zawiera wszystkie trasy, a drugi odpowiednie akcje. Obecnie mam rozwiązanie, aby to osiągnąć, jednak muszę ustawić instancję aplikacji jako globalną, aby mieć do niej dostęp w akcjach. Moja obecna konfiguracja wygląda następująco:
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.
};
controllers / index.js:
exports.posts = require('./posts');
exports.index = function(req, res) {
// code
};
controllers / posts.js:
exports.index = function(req, res) {
// code
};
exports.show = function(req, res) {
// code
};
Jednak ta konfiguracja ma duży problem: mam bazę danych i instancję aplikacji, które muszę przekazać do akcji (controllers / *. Js). Jedyną opcją, o której mógłbym pomyśleć, jest uczynienie obu zmiennych globalnymi, co nie jest rozwiązaniem. Chcę oddzielić trasy od działań, ponieważ mam dużo tras i chcę, aby były w centralnym miejscu.
Jaki jest najlepszy sposób przekazywania zmiennych do akcji, ale oddzielając działania od tras?