Javascript 什么';s角度的优点';当我可以在es6中使用导入/导出时,可以使用依赖项注入

Javascript 什么';s角度的优点';当我可以在es6中使用导入/导出时,可以使用依赖项注入,javascript,angularjs,ecmascript-6,Javascript,Angularjs,Ecmascript 6,我刚搬进一家使用AngularJS(1.x)堆栈的公司。 来自es6(babel)+webpack+redux+react的背景,我想知道当我可以简单地导入/导出文件时,使用AngularJS依赖注入有什么好处。 坦率地说,导入/导出为我提供了要查找的文件位置,但AngularJS依赖项注入似乎没有考虑到这一点。 (此外,angularJS服务、工厂等似乎可以用ES6类、导出/导入等替换。) 使用AngularJS依赖项注入和AngularJS特定依赖项(如$http等)而不是转移到替代品上有什

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

使用AngularJS依赖项注入和AngularJS特定依赖项(如$http等)而不是转移到替代品上有什么明显的好处吗?(如jquery的ajax等)


谢谢:)

模块加载和依赖项注入是两种不同的想法

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

Angular允许您指定一个提供程序,该提供程序使您能够在注入之前配置代码。我建议你看看这个链接

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

至于离开特定于Angular的服务,我建议不要这样做,因为这些服务没有连接到您的作用域中,所以您可能需要到处调用$scope.apply()


综上所述,您可能会认为DI在Javascript这样的语言中用处不大,因为它不是Java和C#这样的类驱动语言

我不确定两者之间有什么好处。但是如果你的新公司与angularjs 1.x合作。如果这个应用程序很大,你需要花很多时间去改变任何地方。我不确定他们会想要那个。也有其他开发者不习惯ES6,也许你也应该考虑一下。记住,在ES6是真实的之前,角度是写成的,在巴别塔、WebPACK之前也有反应。此外,与es6类的功能相比,angular services/Factorys/等还有什么更“特殊”的地方吗?您将依赖注入和模块加载混合在一起,最重要的是,您添加了一个关于使用angular Provider替代品的问题。@OlegEstekhin我正在考虑说服团队迁移到es6 wonderland,但我也在想,在这种情况下,是否会有一些隐藏的陷阱(例如,服务上隐藏的angularJS magic/等等),如何混合模块加载和依赖注入?e、 var test=getInjectableRequire('./path/to/some/file.js');(在测试文件中):setInjectableRequire('./path/to/some/file.js')?我从未使用过它,但我认为OC lazy load会做类似的事情。