我正在使用 grunt.js
为我的 Angular 应用程序连接我的文件。
我刚刚浏览并整理了代码库以遵循此处讨论的约定,特别是将我的代码分组为代表功能的小模块。
但是,我发现如果在声明模块之前使用了模块,则连接顺序似乎会破坏应用程序。
例如:
|-- src/
| |-- app/
| | |-- userProfile/
| | | | userProfile.js
| | | |-- deposits/
| | | | |-- depositFormCtrl.js
在哪里:
// userProfile.js
var userProfile = angular.module('userProfile',[])
// depositFormCtrl.js
angular.module('userProfile')
.controller('DepositFormCtrl', function($scope) {...});
当 grunt 执行连接时,depositFormCtrl.js
出现在userProfile.js
. 这会导致应用程序抛出错误,抱怨:
未捕获的错误:没有模块:userProfile
我看到很多关于使用 RequireJS / AMD 管理模块加载顺序的可能性的讨论。然而,经常有人说这是矫枉过正/不是必需的,因为 Angular 会为你处理这个问题。
例如:Angular 团队的 Brian Ford提到:
我个人认为 RequireJS 做的太多了。AngularJS 的 DI 系统真正缺少的唯一功能是异步加载。
他还在其他地方表示他不推荐使用 Angular 的 RequireJS。
我还看到提到使用angular-loader.js,如种子项目所示。但是,据我了解,(官方文档很少)加载程序旨在解决加载模块乱序的问题,而不是在使用之前对其进行引用。
将 angular-loader.js 添加到我的项目中并没有解决问题。
是否有我应该使用的声明来防止我遇到的错误?
声明模块和控制器的正确方法是什么,以便连接订单文件不会影响运行时的代码?