Javascript 什么';It’乘快车的最佳方式是什么;app&x27;对象从单独的路由文件中删除?

Javascript 什么';It’乘快车的最佳方式是什么;app&x27;对象从单独的路由文件中删除?,javascript,node.js,express,Javascript,Node.js,Express,在Express 4中,默认情况下,路由从单独的文件加载: app.use('/', routes); 将加载routes/index.js 我有一个附加到app本身的第三方库。是否有从routes/index.js内部访问app的首选方式 我曾经考虑过依赖注入ie,routes/index.js module.exports = function(app){ (routes go here) } 然后: app.use('/', routes(app)) 但我想知道是否有更好的办

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

app.use('/', routes);
将加载
routes/index.js

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

我曾经考虑过依赖注入ie,
routes/index.js

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

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

但我想知道是否有更好的办法从单独的路由文件中访问express“app”对象的最佳方式是什么?

您只需在路由处理程序中通过req.app访问app即可

我查看了许多应用程序生成器,每个人的做法都不同

大多数情况下,虽然我看到它的工作原理与你的要求相反。路由模块不会让应用程序传入,它们只是返回自己并连接到应用程序

我喜欢使用以下模式:

路由器/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):
因此,routers/中的模块返回一个Express Router对象,该对象随后在各自的路径(路由)上连接到应用程序


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

AFAICT这不是问题的答案。在
routers/hello.js
中,它没有访问express
app
对象。