【发布时间】:2016-11-06 11:14:38
【问题描述】:
我想将我的快速路由放在单独的文件中,但我很难确定在路由中引用模块的最佳做法是什么。
这是我在下面看到的各种方法。哪一个是最佳实践?这是否会根据您尝试执行的操作(日志记录、配置、数据源等)而发生变化?
请注意,为了缩短帖子的篇幅,这些地方缺少了很大的空白。
- 在应用程序和路由中都“需要”。
//app.js
var cfg = require('./config.js');
//router.js
var cfg = require('./config.js');
module.exports = function () {
var router = new express.Router();
router.get('/search', function(req, res) {
console.log('cfg', cfg);
});
return router;
};
- 传入模块
//app.js
var cfg = require('./config.js');
app.use(require('./router')(cfg));
//router.js
module.exports = function (cfg) {
var router = new express.Router();
router.get('/search', function(req, res) {
console.log('cfg', cfg);
});
return router;
};
- 使用 express app.set/get
//app.js
var cfg = require('./config.js');
app.set('cfg', cfg);
//router.js
module.exports = function () {
var router = new express.Router();
router.get('/search', function(req, res) {
console.log('cfg', app.get('cfg'));
});
return router;
};
- 使用 express 中间件并添加到 req
//app.js
var cfg = require('./config.js');
app.use(function (req, res, next) {
req.cfg = cfg;
next();
});
//router.js
module.exports = function () {
var router = new express.Router();
router.get('/search', function(req, res) {
console.log('cfg', req.cfg);
});
return router;
};
【问题讨论】:
-
global.cfg = require('./config.js');怎么样?