相关阅读:
萌新快速成长之路
如何编写软件设计文档
JAVA编程思想(一)通过依赖注入增加扩展性
JAVA编程思想(二)如何面向接口编程
JAVA编程思想(三)去掉别扭的if,自注册策略模式优雅满足开闭原则
JAVA编程思想(四)Builder模式经典范式以及和工厂模式如何选?
Java编程思想(七)使用组合和继承的场景
JAVA基础(一)简单、透彻理解内部类和静态内部类
JAVA基础(二)内存优化-使用Java引用做缓存
JAVA基础(三)ClassLoader实现热加载
JAVA基础(四)枚举(enum)和常量定义,工厂类使用对比
JAVA基础(五)函数式接口-复用,解耦之利刃
Seata源码(一)初始化
Seata源码(二)事务基础对象
Seata源码(三)事务处理类结构和流程
Seata源码(四)全局锁GlobalLock
Seata源码(五)Seata数据库操作
Seata源码(六)Seata的undo日志操作
Seata源码(七)Seata事务故障处理
Seata源码(八)Seata事务生命周期hook
Seata源码(九)TCC核心类和处理逻辑
Seata源码(十)RM接收到请求后的调用过程
Seata源码(十一)TC接收到请求后的处理过程\
一、知识点
Angular模块核心知识点如下:
1.模块的作用。
2.模块各个元数据的含义和作用
3.模块有哪些分类,分类原则
4.模块的惰性加载机制
5.开发时如何对模块进行规划
二、模块作用
首先,模块作为一个容器,有封装代码的作用,组件、指令、管道、服务的根宿主均是模块。 其次,一个模块可以导入其他模块,并导出其他模块的组件、指令、管道和服务,这种导入、导出能力可以向后传递,使得后续模块不必重复导入相同的模块,例如:
1.假设模块A已经导出本模块的指令和服务,使得其他模块可以使用
2.模块B导入了模块A,并导出模块A的指令和服务
3.模块C导入模块B后则可以使用模块A的指令和服务而不需要再次导入A
这种能力使得可以规划一个share模块来统一导出公共的通用构件,其他模块只需要导入share模块则可。
三、模块元数据
模块元数据如下:
1.@NgModule是一个装饰器,声明某个类是Angular模块,看起来很像Java的注解,但实际有很大不同,前者用于在编译期给编译器编译代码,后者用于在运行期控制代码逻辑。
2.declarations: 声明属于该模块的组件、指令和管道
3.entryComponents:可以动态加载进视图的组件列表,一般是根组件
4.providers:需要提供依赖注入的服务列表
5.imports: 要导入的其他模块
6.exports: 导出的组件,指令,管道。只有先导出,其他模块再导入本模块后这些构件才能被其他模块使用。
四、模块分类
根据模块的作用不同进行模块分类有利于代码维护,Angular模块分为以下几类:
2.路由特性模块,带路由的特性模块
3.路由模块,专门实现路由功能的模块
4.服务模块,提供公共服务的模块,如HTTP请求服务
5.UI模块,用于封装公共的UI组件,例如表格组件,穿梭框组件。
五、惰性加载
在开发过程中经常可见惰性加载的例子,如在数据量大时,树的加载通常只加载一级节点数据,当有需要时才加载子节点数据。惰性加载的目的是缩短单次交互的时间,提升客户体验。为了避免将所有模块代码一次加载到客户端,Angular支持模块惰性加载,只有带路由的特性模块才能惰性加载。特性加载的实现如下:
六、模块规划
在开始编写项目代码前和项目开发过程中,应先做模块规划再编写代码,而不是整个项目只有一个特性模块和一个路由模块来完成所有事情。模块规划主要参考模块分类以及单一职责原则:
1.先划分好特性,再按照特性划分特性模块
2.每个特性的路由模块独立
3.拆分单独的服务模块,并根据服务的作用维度不同,继续拆分和聚合
4.拆分独立的UI组件模块
5.划分需要惰性加载和急性加载的模块
end.