组织一个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'])
dep1
和dep2
是你的模块需要的任何依赖。 然后在任何其他文件,例如一个控制器,你只需要像这样链接到app
模块:
angular.module('app').controller(...) // no dependency array
AngularJS带有一个内置的dependency injection机制。 您可以将您的应用程序分成多个不同types的组件,AngularJS可以将其注入到彼此之中。 通过模块化应用程序,可以更轻松地重用,configuration和testing应用程序中的组件。
AngularJS包含以下核心types的对象和组件:
- 值
- 厂
- 服务
- 提供商
- 不变
这些核心types可以使用AngularJSdependency injection机制相互注入。 在本文的其余部分中,我将解释如何定义和注入这些组件到对方。