如何将大型AngularJS项目拆分为模块

我来自Backbone和JavascriptMVC的世界.但我真的很想转而使用AngularJS.到目前为止,我有一个大问题让我无法转换.

我创建单页应用程序.让我们假装它包含一个标签模块,一个文件上传模块和一个文件列表模块.

我在Backbone中做的是将每个作为独立模块分开
用自己的视图模板,viewcontroller等.这样,我就可以在我的应用程序中使用该模块的几个位置.模块不知道除了它自己以外的任何东西.

如何在AngularJS中处理这个问题?是否可以为每个模块创建一个angular.module(例如标签模块)?

我觉得他们告诉如何在他们的文档中创建模块中的许多控制器.但这听起来并不像我需要的那样.或者我在这里误解了一些主要概念?

编辑:
我做了一些更多的研究.它看起来像指令是我正在寻找的.虽然AngularJS中的模块代表整个Web应用程序.因此,名称’组件’和’模块’的混合使我感到困惑.

我现在正走在正确的道路上吗?

您绝对可以定义模块,并在应用程序级别包含模块,然后通过依赖注入,您可以让控制器使用他们需要的内容.

我有一个小型应用程序的概念验证示例,我正在努力学习角度(它很脏,我的操场):

http://plnkr.co/edit/1jGqaB00OznAUpyPZVT3

我的应用程序定义如下所示:

angular.module('myApp',['ngResource','ui.bootstrap','myApp.services','myApp.servicesMovie','myApp.servicesSearch','myApp.servicesUtils','myApp.servicesMovieList'])

您可以看到我在我的应用程序中包含了许多不同的模块,然后是从服务模块获取一些服务的控制器示例:

function SearchCtrl($scope,$rootScope,$route,$timeout,$routeParams,$location,SearchService,MovieListService) { etc }

这是模块的定义之一(也具有依赖性):

angular.module('myApp.servicesMovieList',['myApp.services'])

关于模板,您可以定义这些并将它们包含在您的路线值中:

$routeProvider.when('/view1',{templateUrl: 'view1.html',controller: ViewCtrl});
    $routeProvider.when('/movie/:id',{templateUrl: 'movie-detail.html',controller: MovieCtrl,resolve: MovieCtrl.resolve});
    $routeProvider.when('/search/:q/:p',{templateUrl: 'movie-search.html',controller: SearchCtrl});
    $routeProvider.when('/searchlist/:url/:p',controller: SearchCtrl});
    $routeProvider.otherwise({redirectTo: '/view1'});

  }])

或者您当然可以使用ng-include调用它们

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...