我对基于AngularJS和NodeJS的依赖注入有疑问。
AngularJS的$ injector与NodeJS的require模块有什么区别?
使用带有MEAN STACK架构的模块而不是使用Angular应用程序的$ injector会很好吗?为了whar提议?
答案 0 :(得分:4)
他们完全不同。
Angular的$ injector是Inversion of contorl的经典示例。而不是每个模块获取它们的依赖项,你有一个$ injector,它的工作是为在运行时提供它们的模块提供依赖。这样可以很容易地在测试中切换出依赖关系,例如,因为没有任何东西迫使你传递预期的依赖关系 - 你可以传入一个模拟版本。
NodeJS的require方法只允许您需要其他javascript文件,并且可以访问他们在module.exports上设置的任何属性。
他们不是互相排斥的。您可以使用browserify(如前端的需要的nodejs)加载不同的Angular模块(如果它们位于不同的文件中)。然而,它基本上等同于连接它们。如果您想根据需要动态加载角度模块,则必须使用RequireJs。
相反,您可以通过将内容传递到模块而不是尝试从模块中获取它来在节点中使用控制反转。在许多情况下,这实际上是很好的做法。