【发布时间】:2013-03-20 00:14:58
【问题描述】:
知道 Express.js 几乎将其留给开发人员来决定应用程序结构,并且在阅读了很多关于 SO 的建议(例如,参见 link1 和 link2)以及检查 example in official 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 客户端?
- 如何通过
require('./models')(db)将此redis客户端实例传递给多个模型
更新:
我为index.js 尝试了不同的方法,改用module.exports 来返回模型/控制器对象:
module.exports = function(models){
var routes = {};
routes.online = require('./home.js')(models);
routes.users = require('./user.js')(models);
return routes;
};
现在似乎是一个更好的主意?
【问题讨论】:
标签: node.js model-view-controller express redis