Page 313 - AngularJS权威教程
P. 313

21.2  模块    293


              理的位置应该在scripts/controllers/main.js里,myFilter对象在scripts/filter/myFilter.js里。            19
                  采用这种结构是有好处的,因为每个文件都很小,根据功能区分,它能让多个开发人员有效
              地协同开发一个应用。                                                                             20

                  此外,我们建议为应用编写单元测试时,在根目录的test/下创建跟script目录同样的结构,如
              图21-2所示。                                                                               21


                                                                                                     22


                                                                                                     23



                                                                                                     24


                                                                                                     25


                                                                                                     26



                                                                                                     27
                                            图21-2  推荐的测试目录结构

                  创建单模块应用时,我们建议用这样的结构。当创建多模块复合应用时,可以用一个有相似                                           28
              结构的module/目录作为顶层结构。
                                                                                                     29
              21.2 模块

                  模块是Angular应用的核心功能。模块包含我们为特定应用编写的所有代码,因而可能会快                                        30
              速膨胀。尽管这趋势也不算坏(模块是一种减少全局作用域干扰的好办法),我们还可以再细分
              模块。                                                                                    31
                  关于何时创建模块,何时在全局模块中嵌套功能,有几种不同意见。下面两种方式都是把功
              能模块化的合理方式。                                                                             32

                  1. 函数模块化
                  最推荐的方法(我们以及Google团队)是根据功能将应用程序分解为模块。当根据功能分解                                        33
              应用程序时,我们打算聚焦于模块函数而不是包含的函数类型。
                                                                                                     34
                  例如,当编写一个包含主页路由和登录路由的简单应用时,你可以构建两个模块来交付完全
              分离的功能。这个主应用看起来可能如下所示:
                                                                                                     35
                  angular.module('app', [
                      'app.home',
                      'app:login'
                  ]);                                                                                36
   308   309   310   311   312   313   314   315   316   317   318