[英]Dependency injection in a revealing module
我通常以以下方式创建我的javascript“控制器”:
var module = (function(){
function init(someService){
someService.doSomething();
}
return {
init: init
};
})();
module.init(SomeService);
我刚刚偶然发现了javascript中的依赖注入 (例如JavaScript Dependency Injection )。
从测试的角度来看,我想知道的是,在我的链接中使用Injector
来注入模拟等有什么优势,而不是像我上面那样简单地将其传递给init
函数。
详细地说,我今天初始化测试时可以通过SomeService
模拟。 那么,使用Injector
或类似工具对我有什么意义?
您已经在进行依赖注入。 而不是在模块中初始化someService,而是将其传递给init
方法。 这正是依赖注入的意义所在!
这些优点之一是测试的简便性,因为您只需注入someService的模拟即可(正如您已经说过的)。
注入器/依赖注入容器的使用是为了管理所有这些依赖。 想象有更多的模块,所有模块都具有依赖性。 管理所有这些类的初始化将很快成为一场噩梦。
那就是容器的介入,再次使DI感到高兴。
因此,要回答您的问题,如果这就是您所拥有的全部代码,则不需要注入器/容器。
// the Module object
var Module = function (someService) {
this.someService = someService;
};
Module.prototype.do = function () {
this.someService.doSomething();
};
// configuring the injector
Injector.add('someService', new SomeService());
// retrieving the module instance with the SomeService being injected
var module = Injector.get(Module);
module.do();
有关更多示例, 请参见http://www.yusufaytas.com/dependency-injection-in-javascript/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.