从单独的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议,使用链接的发电机,并从那里开始。