Hel*_*rld 1 javascript dependency-injection typescript inversifyjs
你能推荐任何关于打字稿 inversify 的优秀学习资源吗?
我查看了 http://inversify.io/并遵循了示例,但我没有理解它的实际工作原理或我为什么需要它。
一个很棒的视频学习资源会很棒,或者是一个简单的初学者示例。
谢谢您的帮助。
控制反转,又名依赖注入的想法是,类将用于实例化类所需的依赖实例的控制权(读取:责任)移交给将向它们提供这些实例的容器。
所以你不会做这样的事情:
public constructor() {
this._katana = new Katana();
this._shuriken = new Shuriken();
}
Run Code Online (Sandbox Code Playgroud)
我不会给出一个完整的例子,因为我基本上会复制粘贴他们在他们的网站上的“基础知识”部分清楚地共享的代码。
他们举了一个构造函数注入的例子:
public constructor(
@inject(TYPES.Weapon) katana: Weapon,
@inject(TYPES.ThrowableWeapon) shuriken: ThrowableWeapon
) {
this._katana = katana;
this._shuriken = shuriken;
}
Run Code Online (Sandbox Code Playgroud)
这特别适用于:
例如,根据环境,您可能希望注入具有不同值的不同配置对象。这只是一个例子。
构造函数注入通常优于属性注入,因为库似乎也支持这一点。
请注意,注入的是接口,而不是具体的类类型。
所以这个类只是声明它需要一个 Weapon / ThrowableWeapon 类型的对象。
具体绑定发生在inversify.config.ts:
container.bind<Weapon>(TYPES.Weapon).to(Katana)
Run Code Online (Sandbox Code Playgroud)
所以这很有用的原因是你有能力在运行时提供具体的类。您不需要在类中预定义(硬编码)它们。
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |