在大型项目中管理 Angular 个模块名称

Managing Angular Module names in a large project

我正在与一个开发团队合作进行一个大型 angular 项目。

我们 运行 遇到的问题是,如果一个组件有多个文件,比如指令。

一些-directive.js
一些指令-controller.js

在这两个文件的定义中,您必须将它们附加到一个模块,但是一个文件必须使用 [] 创建模块。如果开发人员忘记四处查看,他们将在第二个调用的文件中添加 [],这实际上会覆盖该模块。所以现在它变成了一个记忆游戏。每个开发人员都必须记住只在一个文件中声明模块 []

一些-directive.js

angular.module('some-module',['some-dependencies']).directive('some-directive',function(){});

一些-controller.js

angular.module('some-module',[]).controller('some-controller',function(){});

我们一直在使用以下方法。有没有更好的方法?

一些-directive.js
一些指令-module.js
一些指令-controller.js

其中 some-directive-module 仅包含模块创建,包括任何依赖项,并执行任何所需的 .config。开发人员仍然需要记住 angular.module('some-directive') 在没有方括号的所有其他文件中。

一些指令-module.js

angular.module('some-directive',[])
.config(//someconfig stuff);

一些指令-module.js

angular.module('some-directive).directive(//declare directive);

一些指令-controller.js

angular.module('some-directive).controller(//declare contrller used by directive);

我建议我们改为执行以下操作,它消除了覆盖模块的问题,但我从其他开发人员之一那里收到了一些负面反馈

一些指令-module.js

angular.module('some-directive',['some-directive.directive','some-directive.controller'])
.config(//someconfig stuff);

一些指令-module.js

angular.module('some-directive.directive',[]).directive(//declare directive);

一些指令-controller.js

angular.module('some-directive.controller',[]).controller(//declare contrller used by directive);

有没有更好的方法?或者以上选项是否正确?

recommended way (by multiple competent people) 是使用 setter-getter-语法(用 angular.module("someModule",[]) 创建一次,然后用 angular.module("someModule") 访问) .将模块定义和配置放在一个文件中看起来非常干净,并且是许多开发人员之间的常见做法。但是请确保不要为每个指令都创建一个模块 - 而是将服务、指令、常量等分组到合理的功能模块中。

在我看来,通过名称明确文件包含的内容也是一个好主意,因此您的 some-directive-module.js 方法对我来说似乎不错。如果开发人员 "poke around" 和 "wildly add []",他们应该受到惩罚,然后解释模块如何在 angular 中工作,所以他们停止这样做 ;-)