原文地址 http://www.jianshu.com/p/317f0e4b7284

根模块 (root module)

每个应用都至少有一个根模块用来引导并运行应用。根模块通常命名为 AppModule

示例 src/app/app.module.ts

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component'; @NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }

imports 数组

注意:不要在 imports 数组中加入 NgModule 类型之外的类。

如果有两个同名指令都叫做 HighlightDirective,我们只要在 import 时使用 as 关键字来为第二个指令创建个别名就可以了。

import {
HighlightDirective as ContactHighlightDirective
} from './contact/highlight.directive';

关于 BrowserModule

每个浏览器中运行的应用都需要 @angular/platform-browser 里的 BrowserModule。 所以每个这样的应用都在其根 AppModuleimports 数组中包含 BrowserModule

NgIf 是在来自 @angular/commonCommonModule 中声明的。
CommonModule 提供了很多应用程序中常用的指令,包括 NgIfNgFor 等。
BrowserModule 导入了 CommonModule 并且重新导出了它。 最终的效果是:只要导入 BrowserModule 就自动获得了 CommonModule 中的指令。

declarations 数组

你必须在一个 NgModule 类声明每一个组件,否则浏览器控制台会报错。(好像不对啊)

不要在 declarations 添加组件、指令和管道以外的其他类型。

不要把 NgModel(或 FORMS_DIRECTIVES)加到 AppModule 元数据的 declarations 数据中!这些指令属于 FormsModule
组件、指令和管道只能属于一个模块。
永远不要再次声明属于其它模块的类。

bootstrap 数组

通过引导根 AppModule 来启动应用。 在启动过程中,其中一步是创建列在 bootstrap 数组的组件, 并将它们每一个都插入到浏览器的DOM中。

每个被引导的组件都是它自己的组件树的根。 插入一个被引导的组件通常触发一系列组件的创建并形成组件树。

虽然可以将多个组件树插入到宿主页面,但并不普遍。 大多数应用只有一个组件树,它们引导单一根组件。

Ng模块 (NgModule)

特性模块

特性模块是带有 @NgModule 装饰器及其元数据的类,就像根模块一样。 特性模块的元数据和根模块的元数据的属性是一样的。

根模块和特性模块还共享着相同的执行环境。 它们共享着同一个依赖注入器,这意味着某个模块中定义的服务在所有模块中也都能用。

它们在技术上有两个显著的不同点:

  • 我们引导根模块来启动应用,但导入特性模块来扩展应用。
  • 特性模块可以对其它模块暴露或隐藏自己的实现。

特性模块用来提供了内聚的功能集合。 聚焦于应用的某个业务领域、用户工作流、某个基础设施(表单、HTTP、路由),或一组相关的工具集合。

虽然这些都能在根模块中做,但特性模块可以帮助我们把应用切分成具有特定关注点和目标的不同区域。

当前模块不会继承其它模块中对组件、指令或管道的访问权。根模块与特性模块的 imports 互不相干。如果某一个模块要绑定到 [(ngModel)] 就必需导入 FormsModule

最新文章

  1. 在Linux虚拟机下配置jdk的环境变量
  2. MySQL 导出数据
  3. Toad各版本所包含的组件
  4. abstract class和interface的区别
  5. Maven打包时囊括本地依赖的jar包
  6. NGUI 3.5教程(六)Font字体
  7. 迭代map方法
  8. Winfrom 表格单元格格式化事件(DataGridView - CellFormatting)
  9. MVC3+EF4.1学习系列(三)-----排序 刷选 以及分页
  10. java 区分error和exception
  11. ValueError: too many values to unpack
  12. pip install升级包
  13. zabbix添加监控Mysql
  14. windows服务器的误解
  15. ARP协议总结
  16. xtrabackup安装使用及原理
  17. P2758 编辑距离
  18. Redis源码阅读(四)集群-请求分配
  19. Swift2.0语言教程之类的属性
  20. dwz navtab 限制打开数量实例

热门文章

  1. 你被R语言的=和<-搞昏了头吗
  2. Nginx 指令目录(中文版)
  3. redis 的消息订阅和消息队列的功能比较
  4. cmake 常用变量和常用环境变量查表手册---整理 .
  5. Spring MVC学习摘要
  6. Vue:Vue2.0搭建脚手架
  7. 【bootstrap组件】几个常用的好用bs组件
  8. 【转】WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu
  9. 概率霍夫变换(Progressive Probabilistic Hough Transform)原理详解
  10. Eclipse使用心得与技巧