从单独的路径文件中访问快速“app”对象的最佳方法是什么?

时间:2015-02-26 17:00:52

标签: javascript node.js express

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

app.use('/', routes);

会加载routes/index.js

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

我已经考虑过依赖注入,即routes/index.js

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

然后:

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

但我想知道是否有更好的方法。 访问快递应用程序的最佳方式是什么?来自单独路径文件的对象?

2 个答案:

答案 0 :(得分:11)

您只需通过路线处理程序中的req.app访问应用

即可

答案 1 :(得分:0)

我查看了许多应用程序生成器,每个人都采用不同的方式。

大多数情况下,虽然我看到它与你所要求的相反。路线模块没有传入应用程序,它们只返回自己并附加到应用程序。

我喜欢使用以下模式:

路由器/ 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 Router对象,然后在各自的路径(路由)上附加到应用程序。

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