我对基于 AngularJS 和 NodeJS 的依赖注入(inject)有疑问。
AngularJS 的 $injector 和 NodeJS 的 require 模块有什么区别吗?
对于 Angular 应用程序,使用具有 MEAN STACK 架构的 require 模块而不是 $injector 会很好吗?为了什么求婚?
最佳答案
它们完全不同。
Angular 的 $injector 是 Inversion of contorl 的经典例子.不是每个模块都获取它们的依赖项,而是有一个 $injector,它的工作是为在运行时请求它们的模块提供依赖项。这使得在测试中切换依赖关系变得非常容易,例如,因为没有什么会强制您传递预期的依赖关系——您可以传递模拟版本。
NodeJS 的 require 方法只允许您请求其他 javascript 文件并可以访问它们在 module.exports 上设置的任何属性。
它们并不相互排斥。如果不同的 Angular 模块位于单独的文件中,您可以使用 browserify(前端需要 nodejs)来加载它们。然而,它本质上等同于将它们串联起来。如果您想根据需要动态加载 Angular 模块,则必须使用 RequireJs 之类的东西。
相反,您可以通过将内容传递到模块而不是尝试从模块中获取它来在 Node 中使用控制反转。在许多情况下,这实际上是一种很好的做法。
关于node.js - AngularJS 注入(inject)器和 NodeJS 之间的区别 require 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180653/