AngularJS 中可注入服务的接口
Interfaces for injectable services in AngularJS
我是 AngularJS 的新手。据我了解,依赖注入的全部意义在于,以后可以轻松地将依赖项与 "similar" 依赖项交换,并且代码仍然可以正常工作。 "similar" 通常意味着依赖项实现了某种接口。
如果我正在编写一个控制器,而我的同事正在编写一个我将在我的控制器中使用的服务,我如何才能确保他为我提供的服务包含我的所有东西需要?在传统的 OO 语言中,他的服务将是 class 实现接口,这将迫使他实现某些方法。但是如何在angularJS中做到这一点呢?我是否必须检查该服务是否具有我想要的所有方法的属性,以及所有这些属性的 __proto__
是否为 Function.prototype
?并检查这些方法是什么 return,我是否使用模拟对象调用它们然后检查 returned 对象?
或者有更好的推荐方法吗?
这可能是 DI 的一个特性,但重点是能够明确地看到您的依赖项来自哪里,而不是像 window 这样的神奇全局。
JavaScript 没有强制接口的隐式方式。你的同事会创建一个服务或工厂,为一个对象提供附加的功能和属性。同样,这些函数可以 return 随心所欲,而您没有办法强制执行它们 return。
如果您想确保您的同事return符合您的期望,编写单元测试并使用 ngMock 可能是个好主意。
此外,附加到 prototype
而不是 __proto__
。
我是 AngularJS 的新手。据我了解,依赖注入的全部意义在于,以后可以轻松地将依赖项与 "similar" 依赖项交换,并且代码仍然可以正常工作。 "similar" 通常意味着依赖项实现了某种接口。
如果我正在编写一个控制器,而我的同事正在编写一个我将在我的控制器中使用的服务,我如何才能确保他为我提供的服务包含我的所有东西需要?在传统的 OO 语言中,他的服务将是 class 实现接口,这将迫使他实现某些方法。但是如何在angularJS中做到这一点呢?我是否必须检查该服务是否具有我想要的所有方法的属性,以及所有这些属性的 __proto__
是否为 Function.prototype
?并检查这些方法是什么 return,我是否使用模拟对象调用它们然后检查 returned 对象?
或者有更好的推荐方法吗?
这可能是 DI 的一个特性,但重点是能够明确地看到您的依赖项来自哪里,而不是像 window 这样的神奇全局。
JavaScript 没有强制接口的隐式方式。你的同事会创建一个服务或工厂,为一个对象提供附加的功能和属性。同样,这些函数可以 return 随心所欲,而您没有办法强制执行它们 return。
如果您想确保您的同事return符合您的期望,编写单元测试并使用 ngMock 可能是个好主意。
此外,附加到 prototype
而不是 __proto__
。