我正在使用AngularJS构建一个相当大的单页Web应用程序,我正在尝试找到使其非常模块化的最佳方法。
我正在使用ngRoute
来构建我的路线,我的app.js
包含:
...
app.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/stats', {
templateUrl : 'views/stats.html',
controller : 'StatController'
})
...
为了实现这一点,我需要将StatController
包含在我的主index.html
文件中,并包括app.js
。
<script src="/js/StatController.js"></script>
当我只包含1或2个控制器时似乎合理,但如果我有30个控制器怎么办?我是否仍然必须将它们全部包含在我的index.html
页面中,或者Angular是否只有在需要时才包含它(即,在请求新控制器时)
答案 0 :(得分:0)
如果您在当前视图中需要某些逻辑,则每个视图都附加了一个控制器。最佳做法是在小块路由文件中分离应用程序的功能。例如,您必须创建一个帐户部分。您可以创建一个accountRoute.js
,其中包含您的模块,如下所示:< / p>
angular.module('myModule').config(function ($stateProvider){
.state('someName',{/*add controllers templates here*/})
})
和其他州也许。
如果您需要创建另一个未来,例如仪表板,您可以创建另一个路由文件dashboardRoute.js
,您可以在其中使用相同的角度模块。这是一个很好的做法,可以构建您的代码以使其更干净。
所以在dashboardRoute.js
中你将拥有:
angular.module('myModule').config(function ($stateProvider){
.state('anotherStateName',{/*add controllers templates here for dashboard feature*/})
})
所有路线都将注入同一模块,因此您可以访问它们。
最后但同样重要的是,您还应该有一个app.js
文件,您可以在其中注入所需的所有模块依赖关系,登录路由等。
在我看来,controllers.js
文件很难调试,维护和阅读。每个控制器应在不同的.js
文件中分隔,并添加到index.html
。
我希望它有所帮助。