ルートを別のファイルに分割したいのですが、1つのファイルにはすべてのルートが含まれ、もう1つのファイルには対応するアクションが含まれています。現在、これを実現するためのソリューションがありますが、アクションでアプリインスタンスにアクセスできるようにするには、アプリインスタンスをグローバルにする必要があります。私の現在の設定は次のようになります。
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');
});
ルート.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
};
コントローラ/posts.js:
exports.index = function(req, res) {
// code
};
exports.show = function(req, res) {
// code
};
ただし、この設定には大きな問題があります。アクション(controllers / *。js)に渡す必要のあるデータベースインスタンスとアプリインスタンスがあります。私が考えることができる唯一のオプションは、両方の変数をグローバルにすることですが、これは実際には解決策ではありません。ルートがたくさんあり、それらを中央に配置したいので、ルートをアクションから分離したいと思います。
アクションに変数を渡すが、ルートからアクションを分離するための最良の方法は何ですか?