保持Angular模块完全分离



我正在尝试建立一个大型的有角度的web应用程序,其架构如所述

我无法理解的是如何使模块与其他模块完全独立。所有github样板文件或专注于模块的示例项目似乎都有严重依赖于公共模块或功能/服务的模块。这有点违背了把所有东西都分开的目的,不是吗?

举以下两个例子:

  • 我有一个实用程序模块,它处理一些基本函数(散列等),还有一个模块处理与API的所有通信。想象一下,一个用户模块需要进行哈希并与API通信,我该如何处理?直接将Util和API模块作为依赖项注入会破坏可靠性,并将它们放入用户模块中意味着大量的双重代码(想象多个模块使用Util和API模块)。或者我应该使用调解员来调解沟通?

  • 存储在User模块中的用户信息应该在应用程序范围内使用,例如在facade中也应该使用(facade应该根据文章处理安全性)。如何允许所有应用程序访问信息,而不依赖于所有信息?

提前感谢:)

我在这里回答了一个类似的问题。将行为划分为模块是正确的做法。

这个想法是将依赖注入作为一种将这些行为收集到一个汇总模块中的方法。有了IoC容器,您就可以在命名和其他约定中遵守规则,通过可配置组件保持应用程序的松散耦合。

我们有一个通用的app类型模块,它只注册适当的功能模块。这反过来又由一个boot模块引导,该模块只是在某个地方调用angular.bootstrap(['app'])(我们的模块在页面中)。

通过这种设置,我们可以轻松地装饰或更换现有的服务/控制器/任何东西,团队可以在功能以不同的速度扩展时进行隔离工作。

例如:

var myWidget = angular.module('myWidget',[])
myWidget.directive('myWidget',function(){...})
myWidget.factory('somethingImportant',function(){...})
var myDomainModel = angular.module('myDomain',[])
myDomainModel.factory('someModel',function(){...})
... //more models
var app = angular.module('app',['myWidget','myDomain'])
app.factory('applicationWidePolicyHere',function(){...})
//on index.html; das boot.
(function(){ angular.bootstrap(document,['app']) })()

最新更新