在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))
但我想知道是否有更好的方法。 访问快递应用程序的最佳方式是什么?来自单独路径文件的对象?
答案 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启发,但使用路由而不是路由器。我的建议是,使用链接的生成器并从那里开始。