从单独的path文件中访问快速“应用程序”对象的最佳方式是什么?

在Express 4中,默认情况下,路由从一个单独的文件加载:

app.use('/', routes); 

会加载routes/index.js

我有一个附加到app本身的第三方库。 有没有一种首选的方式从routes/index.js内访问app

我曾经想过dependency injection,即routes/index.js

 module.exports = function(app){ (routes go here) } 

接着:

 app.use('/', routes(app)) 

但是我想知道有没有更好的方法。 从单独的path文件中访问快速“应用程序”对象的最佳方式是什么?

您可以通过req.app在您的路由处理程序中简单地访问应用程序

我看了一些应用程序生成器,每个人都做不同的事情。

尽pipe我已经看到它的工作方式与你所要求的相反。 路由模块不会让应用程序通过,他们只是返回自己,并附加到应用程序。

我喜欢使用以下模式:

路由器/ hello.js:

 var express = require('express'); var router = express.Router(); router.get('/hello', function (req, res) { res.send('Hello, World!'); }); module.exports = router; 

app.js:

 var express = require('express'); var app = express(); app.use('/sample', require('./routers/hello')); // other routers are attached module.exports = app; 

server.js:

 var http = require('http'); var app = require('app'); var server = http.createServer(app); server.listen(3000): 

因此,路由器中的模块将返回一个Express路由器对象,然后将这些对象连接到相应path(路由)上的应用程序。

这受到Express Application生成器的启发,但使用路由而不是路由器。 我的build议,使用链接的发电机,并从那里开始。