NodeJS:避免在相互依赖的模块中循环依赖

时间:2020-03-17 01:25:56

标签: javascript node.js dependency-injection module

简短形式:

在不创建循环引用的情况下在模块之间建立相互依赖关系的nodeJS习惯用法是什么?

详细信息:

在nodeJS中,假设我有两个对象类:ThingThingController

ThingController负责创建和维护Thing对象的库:

\\file: thing-controller.js
"use strict";

var Thing = require('./thing');

var ThingManager = function() {
  this._things = new Map();
};

// ...etc...

module.exports = ThingManager;

Thing模块可能如下所示:

\\file: thing.js
"use strict";

var Thing = function(id, name) {
  this.id = id;
  this.name = title;
  this.siblings = undefined;
}

// ...etc...

module.exports = Thing;

只要Thing永远不需要引用ThingManager,所有这些都可以正常工作。

但是,如果我想添加Thing.prototype.findSiblings或某些需要调用ThingManager的函数怎么办?

在不创建循环引用的情况下设置相互依赖性的nodeJS惯用法是什么?这是依赖注入的用例吗?如果是,批准的方法是什么?

0 个答案:

没有答案