破境Angular(三)Angular构件之模块
一、知识点
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模块分为以下几类:
1.特性模块,完成特定的特性功能的模块,例如订单模块,排课模块
2.路由特性模块,带路由的特性模块
3.路由模块,专门实现路由功能的模块
4.服务模块,提供公共服务的模块,如HTTP请求服务
5.UI模块,用于封装公共的UI组件,例如表格组件,穿梭框组件。
五、惰性加载
在开发过程中经常可见惰性加载的例子,如在数据量大时,树的加载通常只加载一级节点数据,当有需要时才加载子节点数据。惰性加载的目的是缩短单次交互的时间,提升客户体验。为了避免将所有模块代码一次加载到客户端,Angular支持模块惰性加载,只有带路由的特性模块才能惰性加载。特性加载的实现如下:
六、模块规划
在开始编写项目代码前和项目开发过程中,应先做模块规划再编写代码,而不是整个项目只有一个特性模块和一个路由模块来完成所有事情。模块规划主要参考模块分类以及单一职责原则:
1.先划分好特性,再按照特性划分特性模块
2.每个特性的路由模块独立
3.拆分单独的服务模块,并根据服务的作用维度不同,继续拆分和聚合
4.拆分独立的UI组件模块
5.划分需要惰性加载和急性加载的模块
.End
下期预告:【破境Angular(四)Angular构件之服务】
专题链接:
破境Angular(一)初识Angular
破境Angular(二)Angular构件之模块
关注Java栈及其衍生技术,通过实战经验分享,传播Java栈技术和提高Java栈开发效率。
破境Angular(三)Angular构件之模块相关推荐
- 如何在Windows上安装Angular:Angular CLI,Node.js和构建工具指南
In this tutorial, we'll learn how to install Angular CLI in Windows and use it to create an Angular ...
- 【Angular】angular环境搭建
angular环境搭建 1.安装前的准备 1.1 安装node.js 1.2 安装cnpm 1.3 使用npm/cnpm安装angular/ cli 2.创建angular项目 2.1找到要创建项目的 ...
- Angular: 升级Angular 14到Angular 15
N个月前写过一篇Angular: 升级Angular 13到Angular 14 的文章.现在Angular已经发布到了V16(非GA版本),那是时候把Angular项目升级到Angular 15了. ...
- Python编程基础:第三十六节 模块Modules
第三十六节 模块Modules 前言 实践 前言 我们目前所有的代码都写在一个文档里面.如果你的项目比较大,那么把所有功能写在一个文件里就非常不便于后期维护.为了提高我们代码的可读性,降低后期维护的成 ...
- 凯云水利水电造价工程系统 (三) 材料单价模块(1)
凯云水利水电造价工程系统 (三) 材料单价模块(新增) 3.3-3模块功能的具体实现 3.4功能4名称:材料单价 3.4-1功能实现 材料单价包含两个部分:一个是材料分类,一个是材料单价.材料分类的 ...
- 电力电子变压器。 整流级采用级联H桥多电平拓扑,由三个H桥模块级联
电力电子变压器. 整流级采用级联H桥多电平拓扑,由三个H桥模块级联,将工频交流转换为直流,级联多电平可以减小开关器件的电压应力和开关频率. 中间级采用单主动桥和高频隔离变压器. 输出级采用三相逆变器. ...
- ansible自动化运维详解(三)ansible常用模块续
文章目录 ansible自动化运维详解(三)ansible常用模块续 四.ansible常用模块(2) 4.10.yum_repository 4.11.dnf 4.12.service 及 fire ...
- 《ASP.NET MVC 5 破境之道》:概述
第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. ...
- STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
最新文章
- KiCAD初学者指南
- 在windows系统和linux系统中查询IP地址命令的不同
- 拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
- excel删除无尽空白行_【辅导员说】学好办公软件word、excel、ppt的意义
- elasticsearch5.5.2离线安装x-pack
- Access to the path Library\UnityAssemblies\UnityEngine.xml is denied.
- c#命名规范(转载)
- 无法通过百度联盟申请的常见原因
- 读笔:《重来也不会好过现在》
- 20172328《程序设计与数据结构》第二周学习总结
- hbuilder git 新建共享项目
- 依赖计算机英语作文,过度依赖电脑的危害的英文作文
- [实用代码] 基于CH554电容触摸屏IIC转USB转IIC方案代码分享
- 国内主要遥感期刊投稿信息
- 微信公众平台的设计与开发之道
- arcgis之地理配准
- EPICS ‘makeBaseApp’ IOC
- Java对接阿里云短信平台(快速上手)
- “云”溪笔谈 | 走完过渡期“沉浸式视频云”时代来临
- aws lambda_Google Cloud Run与AWS Lambda