为什么angularjs需要IoC/DI?

est*_*est 5 javascript dependency-injection inversion-of-control angularjs

关注这个问题

/sf/answers/172553671/

所以Python不需要IoC/DI,因为它已经是动态脚本语言了.

Javascript也是一个动态的脚本语言,为什么angularjs需要DI呢?

是因为JSON < - > DOM是静态的吗?有人能给我一个最小的例子吗?

Bri*_*sio 11

Angular中的依赖注入(DI)不是必要的决定.大多数其他JavaScript框架没有它内置的.(虽然看木偶,建立在Backbone.js的顶部框架...它包括一个可选的DI层).Angular.js附带了一组架构意见,可以帮助您分离代码.它是作为设计决策而非必要的.

你需要在Angular中使用DI的最大原因是因为这是Angular的工作方式.角度团队可能决定使用像Require.js这样的异步模块定义(AMD)库.相反,他们选择了DI图案并将其烘烤以方便使用.

您发布的链接表明DI可能是动态语言中的反模式.我不同意这一点.我只想说在动态语言中DI不太必要.然而,在Angular的情况下,它运作良好.它们允许您构建零件系统,并在需要时仅注入您需要的零件.当您查看其他框架的工作方式时,他们(通常)只是将其模型/视图/控制器/模板/路由器部件命名为全局空间(如Backbone.js中的App.Models.Person).

我发现Angular中的DI就像"在罗马时,像罗马人那样做".接受建筑决策.感觉很好.