Express: Jak przekazać instancję aplikacji do tras z innego pliku?
Chcę podzielić moje trasy na różne pliki, gdzie jeden plik zawiera wszystkie trasy, a drugi odpowiadające im akcje. Obecnie mam rozwiązanie, aby to osiągnąć, jednak muszę sprawić, aby instancja aplikacji była globalna, aby móc uzyskać do niej dostęp w akcjach. Moja obecna konfiguracja wygląda tak:
app.js:
<code>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'); }); </code>
routes.js:
<code>exports.setup = function(app, controllers) { app.get('/', controllers.index); app.get('/posts', controllers.posts.index); app.get('/posts/:post', controllers.posts.show); // etc. }; </code>
controllers / index.js:
<code>exports.posts = require('./posts'); exports.index = function(req, res) { // code }; </code>
controllers / posts.js:
<code>exports.index = function(req, res) { // code }; exports.show = function(req, res) { // code }; </code>
Jednak ta konfiguracja ma duży problem: mam instancję bazy danych i aplikacji, które muszę przekazać do akcji (kontrolery / *. Js). Jedyną opcją, jaką mogłem wymyślić, jest uczynienie obu zmiennych globalnymi, co nie jest rozwiązaniem. Chcę oddzielić trasy od akcji, ponieważ mam wiele tras i chcę je w centralnym miejscu.
Jaki jest najlepszy sposób na przekazanie zmiennych do akcji, ale oddzielenie akcji od tras?