组织一个AngularJS应用程序时,你的模块应该都有相同的名称?

在组织一个Angular项目时,你的模块是否应该有相同的名字? 我见过各地的例子。

给定一个像这样的结构:

root-app-folder ├── index.html ├── scripts │ ├── controllers │ │ └── main.js │ │ └── ... │ ├── directives │ │ └── myDirective.js │ │ └── ... │ ├── filters │ │ └── myFilter.js │ │ └── ... │ ├── services │ │ └── myService.js │ │ └── ... │ ├── vendor │ │ ├── angular.js │ │ ├── angular.min.js │ │ ├── es5-shim.min.js │ │ └── json3.min.js │ └── app.js ├── styles │ └── ... └── views ├── main.html └── ... 

你通常会让每个文件都以angular.module('appName')...或者让它们是唯一的,例如angular.module('thisModuleName)...

两者的优点和缺点是什么?

在一个典型的项目中,你只能使用一个模块。 通常,该模块将在数组语法中的app.js文件中声明:

 angular.module('app', ['dep1', 'dep2']) 

dep1dep2是你的模块需要的任何依赖。 然后在任何其他文件,例如一个控制器,你只需要像这样链接到app模块:

 angular.module('app').controller(...) // no dependency array 

AngularJS带有一个内置的dependency injection机制。 您可以将您的应用程序分成多个不同types的组件,AngularJS可以将其注入到彼此之中。 通过模块化应用程序,可以更轻松地重用,configuration和testing应用程序中的组件。

AngularJS包含以下核心types的对象和组件:

  • 服务
  • 提供商
  • 不变

这些核心types可以使用AngularJSdependency injection机制相互注入。 在本文的其余部分中,我将解释如何定义和注入这些组件到对方。