javascript - 当我可以在 es6 中使用导入/导出时,angular 的依赖注入(inject)有什么优势

标签 javascript angularjs ecmascript-6

<分区>

我刚进入一家使用 AngularJS (1.x) 堆栈的公司。 来自 es6(babel)+webpack+redux+react 背景,我想知道当我可以简单地导入/导出文件时使用 AngularJS 依赖注入(inject)有什么好处。 坦率地说,导入/导出为我提供了要查找的文件位置,但 AngularJS 依赖项注入(inject)似乎并没有考虑到这一点。 (此外,angularJS 服务、工厂等似乎可以替换为 ES6 类、导出/导入等)

使用 AngularJS 依赖项注入(inject)和特定于 angularjs 的依赖项(例如 $http 等)而不是转向替代方案是否有任何明显的好处? (比如jquery的ajax等)

谢谢你:)

最佳答案

模块加载和依赖注入(inject)是两种不同的思想。

模块加载就是定位你的源代码。 DI 是关于自动将您的对象连接在一起。

Angular 允许您指定一个提供程序,使您能够在注入(inject)之前配置您的代码。我建议您查看此链接。

https://docs.angularjs.org/guide/providers

angular 的 DI 框架的另一个值(value)是使编写测试变得更容易,因为您可以轻松替换您的服务。

至于远离 Angular 特定服务,我建议不要这样做,因为这些服务未挂接到您的范围,因此您可能必须在任何地方调用 $scope.apply()。

总而言之,您可能会争辩说 DI 在 Javascript 等语言中的用处不大,因为它不是类驱动的,例如 Java 和 C#。

关于javascript - 当我可以在 es6 中使用导入/导出时,angular 的依赖注入(inject)有什么优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33727950/

相关文章:

javascript - 为什么 float 的 `a * b`和 `a *= b`的结果不同

javascript - 错误 : timers. js :234 callback. 应用(计时器,参数);

javascript - 如何对包含分层分隔符的字符串进行排序,优先考虑根级别的字符串

d3.js - d3 v4 + react + ES6 : How to create axis programmatically?

javascript - 从不同变量类型获取数组的有效方法

javascript - .filter 中的 ES6 .filter

javascript - 如何检查 onKeyPress 在 onKeyDown 后是否未触发?

javascript 递归函数 : Uncaught RangeError: Maximum call stack size exceeded

javascript - AngularJs如何将Json字符串传递到$scope.msg=msg.data

angularjs - 如何使用 Protractor 和 TextAngular 填写表格?