知道Express.js几乎让开发人员决定应用程序结构,并且在阅读了很多关于 SO 的建议(例如参见链接 1和链接 2 )以及检查官方 repo 中的示例之后,我仍然不确定是否是什么我正在做的是最好的前进方式。
假设我在我的应用程序中广泛使用 Redis,并且我有多个需要 redis 客户端运行查询的“模型”,在主 app.js 中初始化 redis 客户端会更好,如下所示:
var db = redis.createClient();
var models = require('./models')(db);
var routes = require('./controllers')(models);
还是只在每个模型中初始化 redis,然后让每个控制器都需要感兴趣的模型会更好?
后一种方法是我正在使用的,它看起来不那么干燥。但是传递模型实例是最好的方法吗?请注意,我在这里加载了多个模型/控制器 - 我不确定如何修改我的设置以将 redis 客户端正确地传递给每个模型。
//currently in models/index.js
exports.home = require('./home.js');
exports.users = require('./user.js');
TL;DR,我的问题是:
- 在 MVC 模式应用程序中最好在哪里初始化 redis 客户端?
- 如何将此redis客户端实例传递给多个模型
require('./models')(db)
更新:
我尝试了一种不同的方法index.js
,用于module.exports
返回模型/控制器的对象:
module.exports = function(models){
var routes = {};
routes.online = require('./home.js')(models);
routes.users = require('./user.js')(models);
return routes;
};
现在似乎是一个更好的主意?