反转所需的帮助,我们为什么需要它?
inversify help required and why do we need it?
你能推荐任何关于 inversify in typescript 的优秀学习资源吗?
我查看了 http://inversify.io/ 并按照示例进行了操作,但不了解它的实际工作原理或我需要它的原因。
一个很棒的视频学习资源或一个简单易用的初学者示例会很棒。
感谢您的帮助。
控制反转的想法,又名依赖注入是 class 将实例化依赖实例的控制权(读取:责任)移交给将提供它们的容器 class用这些实例代替。
所以你不会做这样的事情:
public constructor() {
this._katana = new Katana();
this._shuriken = new Shuriken();
}
我不打算给出一个完整的例子,因为我基本上是在 'The Basics'.
部分复制粘贴他们在他们网站上明确分享的代码
他们举了一个构造函数注入的例子:
public constructor(
@inject(TYPES.Weapon) katana: Weapon,
@inject(TYPES.ThrowableWeapon) shuriken: ThrowableWeapon
) {
this._katana = katana;
this._shuriken = shuriken;
}
这特别适用于:
- 测试,因为可以模拟和注入依赖对象
- 根据可变参数注入依赖对象。
例如,根据环境,您可能希望注入具有不同值的不同配置对象。这只是一个例子。
构造函数注入通常优于 属性 注入,因为库似乎也支持这一点。
注意注入的是接口,不是具体的class类型。
所以 class 只是声明它需要一个类型为 Weapon / ThrowableWeapon 的对象。
具体绑定发生在 inversify.config.ts
:
container.bind<Weapon>(TYPES.Weapon).to(Katana)
之所以有用,是因为您可以在运行时提供具体的 classes。您不需要在 class 中预先定义(硬编码)它们。
你能推荐任何关于 inversify in typescript 的优秀学习资源吗?
我查看了 http://inversify.io/ 并按照示例进行了操作,但不了解它的实际工作原理或我需要它的原因。
一个很棒的视频学习资源或一个简单易用的初学者示例会很棒。
感谢您的帮助。
控制反转的想法,又名依赖注入是 class 将实例化依赖实例的控制权(读取:责任)移交给将提供它们的容器 class用这些实例代替。
所以你不会做这样的事情:
public constructor() {
this._katana = new Katana();
this._shuriken = new Shuriken();
}
我不打算给出一个完整的例子,因为我基本上是在 'The Basics'.
部分复制粘贴他们在他们网站上明确分享的代码
他们举了一个构造函数注入的例子:
public constructor(
@inject(TYPES.Weapon) katana: Weapon,
@inject(TYPES.ThrowableWeapon) shuriken: ThrowableWeapon
) {
this._katana = katana;
this._shuriken = shuriken;
}
这特别适用于:
- 测试,因为可以模拟和注入依赖对象
- 根据可变参数注入依赖对象。
例如,根据环境,您可能希望注入具有不同值的不同配置对象。这只是一个例子。
构造函数注入通常优于 属性 注入,因为库似乎也支持这一点。
注意注入的是接口,不是具体的class类型。
所以 class 只是声明它需要一个类型为 Weapon / ThrowableWeapon 的对象。
具体绑定发生在 inversify.config.ts
:
container.bind<Weapon>(TYPES.Weapon).to(Katana)
之所以有用,是因为您可以在运行时提供具体的 classes。您不需要在 class 中预先定义(硬编码)它们。