Я хочу разделить свои маршруты на разные файлы, где один файл содержит все маршруты, а другой - соответствующие действия. В настоящее время у меня есть решение для достижения этой цели, однако мне нужно сделать глобальный экземпляр приложения доступным для него в действиях. Моя текущая настройка выглядит так:
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.
};
Контроллеры/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). Единственный вариант, о котором я мог думать, - это сделать обе переменные глобальными, что на самом деле не является решением. Я хочу отделить маршруты от действий, потому что у меня много маршрутов и вы хотите их в центральном месте.
Какой лучший способ передать переменные в действия, но отделить действия от маршрутов?