Page 314 - AngularJS权威教程
P. 314

294  第 21 章  架构


                 这个完整的应用程序被分解为两个分离的模块并且包含有限的功能,重点是粘合应用程序的
             不同部分。在这个案例中,我们有包含大多数逻辑的“home”界面和“login”界面。
                 以这种方式编写应用程序的好处是,我们可以在逻辑中分解函数的类型。你可以集中于为应
             用程序的每个组成部分提供一个个功能。还可以为我们编写的部分编写测试,从而分解测试。此
             外,还可以延迟加载应用程序的不同部分,因此可以为屏幕中最常见的界面提供最快的应用程序
             体验。
                 此外,这样做还有一个好处:一次编写模块就可跨应用程序共享它们。就是说,如果你的应
             用程序背后使用类似的登录系统,你也可以将这个应用程序的登录部分以及相关测试简单地复
             制、粘贴到另一个应用程序中。

                     在我们的产品应用程序中,我们使用这个方法编写模块化代码并且强烈推荐它。

                 2. 功能的模块化
                 要将我们的应用模块化,最显而易见的方式是按照模块功能划分。

                 我们需要把这些模块注入为主应用的依赖项,这样一来,为每个模块类型建立测试都非常容
             易,并且隔离和细分了功能,我们需要在编写细则时对这些功能作出解释。
                 比如,我们可以为每种Angular对象类型创建一个模块:

                  angular.module('myApp.directives', []);
                  angular.module('myApp.services', []);
                  angular.module('myApp.filters', []);
                  // 我们经常在控制器中使用服务,
                  // 所以,我们会把它们
                  // 注入到'myApp.controllers'模块中
                  angular.module('myApp.controllers', [
                      'myApp.services'
                  ]);
                  angular.module('myApp', [
                      'myApp.directives',
                      'myApp.controllers',
                      'myApp.filters',
                      'myApp.services'
                  ]);

                 使用这种方法的一个问题是,它有时会给我们留下一堆小模块。这一结果不会影响性能,但
             会让开发变得繁琐。


             21.3 控制器


                 当命名控制器时,惯例是使用控制器的名称,用大写字母开始,再加Controller。例如:

                 angular.module('myApp', [])
                 .controller('someController', function($scope) {
                     // 一般不这么写
                 })
                 .controller('SomeController', function($scope) {
                     // 这是控制器通常的写法
                 })
   309   310   311   312   313   314   315   316   317   318   319