深入理解Angular模块
@NgModule装饰器
-  Angular应用程序全部是由 模块化组成的,即模块化开发(组件/指令/服务/管道/路由),与js模块化是不同的概念,但具有异曲同工之妙;
-  Angular 模块之间是隔离的,不能直接互相通信,通过服务和路由来进行通信;
-  组件模板中使用的其它组件(表单组件/路由组件/公共组件/指令/管道等)必须在module中导入其依赖,只在根模块app.module.ts中导入无效( 服务除外)。(在哪里使用,就在哪里导入,如果当前组件需要被其它地方使用,那么还需要同时进行导出,在export数组中配置一下);
-  特殊的模块浏览器模块:BroswerModule,由于浏览器模块只在项目启动时运行一次,所以只需要在根组件模块中导入即可。
-  公共的模块CommonModule:所有的Ng指令(NgIf/NgFor/NgClass/NgStyle/NgComponentOutlet等)和Angular 内置的管道(AsyncPipe/UpperCasePipe等)都是封装在CommonModule模块中。
-  同一个组件/管道只能被一个Angular模块所管理,即在declarations声明数组中出现一次。