破境Angular(三)Angular构件之模块

1、知识点

Angular模块核心知识点以下:
图片描述ide

1.模块的做用。
2.模块各个元数据的含义和做用
3.模块有哪些分类,分类原则
4.模块的惰性加载机制
5.开发时如何对模块进行规划spa

2、模块做用

首先,模块做为一个容器,有封装代码的做用,组件、指令、管道、服务的根宿主均是模块。
其次,一个模块能够导入其余模块,并导出其余模块的组件、指令、管道和服务,这种导入、导出能力能够向后传递,使得后续模块没必要重复导入相同的模块,例如:
图片描述3d

1.假设模块A已经导出本模块的指令和服务,使得其余模块可使用
2.模块B导入了模块A,并导出模块A的指令和服务
3.模块C导入模块B后则可使用模块A的指令和服务而不须要再次导入A
这种能力使得能够规划一个share模块来统一导出公共的通用构件,其余模块只须要导入share模块则可。token

3、模块元数据

模块元数据以下:
图片描述
1.@NgModule是一个装饰器,声明某个类是Angular模块,看起来很像Java的注解,但实际有很大不一样,前者用于在编译期给编译器编译代码,后者用于在运行期控制代码逻辑。
2.declarations: 声明属于该模块的组件、指令和管道
3.entryComponents:能够动态加载进视图的组件列表,通常是根组件
4.providers:须要提供依赖注入的服务列表
5.imports: 要导入的其余模块
6.exports: 导出的组件,指令,管道。只有先导出,其余模块再导入本模块后这些构件才能被其余模块使用。图片

4、模块分类

根据模块的做用不一样进行模块分类有利于代码维护,Angular模块分为如下几类:
图片描述路由

1.特性模块,完成特定的特性功能的模块,例如订单模块,排课模块
2.路由特性模块,带路由的特性模块
3.路由模块,专门实现路由功能的模块
4.服务模块,提供公共服务的模块,如HTTP请求服务
5.UI模块,用于封装公共的UI组件,例如表格组件,穿梭框组件。开发

5、惰性加载

在开发过程当中常常可见惰性加载的例子,如在数据量大时,树的加载一般只加载一级节点数据,当有须要时才加载子节点数据。惰性加载的目的是缩短单次交互的时间,提高客户体验。为了不将全部模块代码一次加载到客户端,Angular支持模块惰性加载,只有带路由的特性模块才能惰性加载。特性加载的实现以下:
图片描述get

6、模块规划

在开始编写项目代码前和项目开发过程当中,应先作模块规划再编写代码,而不是整个项目只有一个特性模块和一个路由模块来完成全部事情。模块规划主要参考模块分类以及单一职责原则:
1.先划分好特性,再按照特性划分特性模块
2.每一个特性的路由模块独立
3.拆分单独的服务模块,并根据服务的做用维度不一样,继续拆分和聚合
4.拆分独立的UI组件模块
5.划分须要惰性加载和急性加载的模块编译器

.Endit

下期预告:【破境Angular(四)Angular构件之服务】

专题连接:
破境Angular(一)初识Angular
破境Angular(二)Angular构件之模块


关注Java栈及其衍生技术,经过实战经验分享,传播Java栈技术和提升Java栈开发效率。
图片描述

相关文章
相关标签/搜索