最近,我开始涉足nodeJS。

现在我知道依赖注入是去耦代码并保持所有代码有序的模式。

但是,当一个依赖关系使用其他依赖关系时,您会怎么做?

例如,假设我有一个使用数据库模块和用户模块的投资模块,用户模块也使用数据库模块。
并且假设我有一个使用投资模块,数据库模块和用户模块的提款模块。在模块的对象中定义一个属性,然后在整个应用程序中将其他依赖项注入该属性,是否明智?

const dbc = require('./dbc');
const user = require('./user');
const invest = require('./invest');
const withdraw = require('./withdraw');

let user.dbc = dbc;
let invest.user = user;
let invest.dbc = dbc;
let withdraw.invest = invest;
let withdraw.user = user;
let withdraw.dbc = dbc;


这是执行此操作的最佳/智能方法吗?对此有些不对劲。
当然,我可以将数据库模块注入到用户模块中,然后将用户模块注入到投资模块中,然后将投资模块注入到提款模块中。但是与此相关的事情也不是很干净。

如果有人向我展示光明,社区会接受这样做的标准做法,那将是很好的。

最佳答案

多次要求一个模块是绝对好的。 NodeJS仅在模块中执行一次代码,并记住模块导出的内容。

当您第二次需要该模块时,该模块不会再次执行(并且不会创建另一个数据库连接)。相反,require('./dbc')的结果将始终通过引用代表数据库连接的同一对象来实现。

10-02 09:16