angular 模块把组件、指令和管道打包成内聚的功能块,每个模块聚焦于一个特性区域、业务领域、工作流或通用工具。模块还可以把服务加到应用中。 这些服务可能是内部开发的(比如你自己写的),或者来自外部的(比如 Angular 的路由和 HTTP 客户端)。 模块可以在应用启动时立即加载,也可以由路由器进行异步的惰性加载。
常用模块
特性模块
特性模块的构造和根模块一样,它提供了特定应用需求的一组功能,如用户工作流、路由或表单。 虽然也可以用根模块做这些,但是特性模块可以帮助你把应用划分成一些聚焦的功能区。特性模块通过它提供的服务以及共享出的组件、指令和管道来与根模块和其它模块合作。
如:构造特性模块的过程如下面的例子: 执行:
- ng new angular-feature-module
- cd angular-feature-module
- ng generate module CustomerDashboard
- ng generate component customer-dashboard/CustomerDashboard 构建如下例子:
可知其文件结构和appModule一致。在根模块appmodule中导入CustomerDashboardModule,在 customer-dashboard.module.ts中导出该模块,并且在app.component.html中加入<app-customer-dashboard></app-customer-dashboard>,即特性模块中组件的view承载器。 之后,就可以看到特性模块被渲染出来了。
特性模块的懒加载
懒加载一个特性模块,有如下步骤
- 创建特性模块;
- 创建该特性模块的路由模块;
- 配置相关路由
总结
不管是AppModule,还是特性模块,结构是一样的。常用模块是为了angular中appmodule而服务的,面向angular的整个应用;特性模块是为了项目中的一些特定的应用准备的,比如路由/表单;