将 AngularJS 应用程序拆分为更小的部分/模块的最佳方法是什么?例如,如果我有一篇博客文章并为此启用了评论,我想我可以将其分解为“帖子”和“评论”(?)之类的模块(可能不是最好的例子,但想法是拆分应用程序逻辑到单独的模块中,而不是构建一个巨大的单模块应用程序)。
我尝试在单独的 DOM 节点中引导两个模块,并相应地在两个模块中使用路由。有几个问题:
- 作为一个“单页”应用程序,我正在引导甚至在首页上使用评论模块,即使它没有在那里使用。
- 由于我无法在 ng-app 中使用多个 ng-views,我不得不在 index.html 视图中为我的模块编写所有包装器并引导它们?应该是这样吗?好像有点不对。我应该如何/在哪里引导这些?
- 路由有什么技巧吗?我应该将它们分散在模块中还是应该以某种方式将它们组合在一起?(创建一个“博客”模块以包含“帖子”和“评论”模块作为依赖项仍然很难定义例如“/post/:id”路由..?)
索引.html
<div class="post"><ng-view></ng-view></div>
<div class="comments"><ng-view></ng-view></div>
javascript.js
angular.module('posts', []).config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
'template': 'Showing all the posts',
'controller': 'postCtrl
})
.when('/post/:id', {
'template': 'Showing post :id',
'controller': 'postCtrl
});
}]);
angular.module('comments', []).config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/post/:id', {
'template': 'Showing post :id comments',
'controller': 'CommentsCtrl'
});
}]);
angular.bootstrap($('.post'), ['posts']);
angular.bootstrap($('.comments'), ['comments']);