【问题标题】:Differences between AngularJS injector and NodeJS require moduleAngularJS 注入器和 NodeJS require 模块的区别
【发布时间】:2014-03-05 12:17:11
【问题描述】:
我有一个关于基于 AngularJS 和 NodeJS 的依赖注入的问题。
AngularJS 的 $injector 和 NodeJS 的 require 模块有什么区别?
使用具有 MEAN STACK 架构的 require 模块而不是 Angular 应用程序的 $injector 会很好吗?还有什么建议?
【问题讨论】:
标签:
node.js
angularjs
dependency-injection
npm
【解决方案1】:
它们完全不同。
Angular 的 $injector 是 Inversion of contorl 的经典示例。你有一个 $injector ,而不是每个模块获取它们的依赖项,它的工作是为在运行时请求它们的模块提供依赖项。例如,这使得在测试中切换依赖项变得非常容易,因为没有什么会强迫您传递预期的依赖项——您可以传递一个模拟版本。
NodeJS 的 require 方法只允许您要求其他 javascript 文件并可以访问它们在 module.exports 上设置的任何属性。
它们并不相互排斥。如果不同的 Angular 模块位于不同的文件中,您可以使用 browserify(nodejs 像前端的 require)来加载它们。然而,它本质上等同于连接它们。如果您想根据需要动态加载 Angular 模块,则必须使用 RequireJs 之类的东西。
相反,您可以通过将内容传递到模块而不是尝试从模块中获取它来在节点中使用控制反转。在许多情况下,这实际上是一种很好的做法。