我通常以以下方式创建我的javascript“控制器”:
var module = (function(){
function init(someService){
someService.doSomething();
}
return {
init: init
};
})();
module.init(SomeService);
我刚刚偶然发现了javascript中的依赖注入(例如JavaScript Dependency Injection)。
从测试的角度来看,我想知道的是,Injector
在我的链接中使用in注入模拟等有什么优势,而不是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/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句