Я хочу розділити свої маршрути на різні файли, де один файл містить усі маршрути, а інший відповідні дії. В даний час у мене є рішення для досягнення цього, однак мені потрібно зробити екземпляр додатка глобальним, щоб мати доступ до нього в своїх діях. Моя поточна установка виглядає приблизно так:
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.
};
контролери / index.js:
exports.posts = require('./posts');
exports.index = function(req, res) {
// code
};
контролери / posts.js:
exports.index = function(req, res) {
// code
};
exports.show = function(req, res) {
// code
};
Однак у цієї установки є велика проблема: у мене є база даних та екземпляр додатка, який мені потрібно передати дії (контролери / *. Js). Єдиний варіант, про який я міг придумати, - це зробити обидві змінні глобальними, що насправді не є рішенням. Я хочу відокремити маршрути від дій, тому що у мене багато маршрутів і хочу, щоб вони були в центральному місці.
Який найкращий спосіб передавати змінні дії, але відокремити дії від маршрутів?