一、知识点

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构件之模块相关推荐

  1. 如何在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 ...

  2. 【Angular】angular环境搭建

    angular环境搭建 1.安装前的准备 1.1 安装node.js 1.2 安装cnpm 1.3 使用npm/cnpm安装angular/ cli 2.创建angular项目 2.1找到要创建项目的 ...

  3. Angular: 升级Angular 14到Angular 15

    N个月前写过一篇Angular: 升级Angular 13到Angular 14 的文章.现在Angular已经发布到了V16(非GA版本),那是时候把Angular项目升级到Angular 15了. ...

  4. Python编程基础:第三十六节 模块Modules

    第三十六节 模块Modules 前言 实践 前言 我们目前所有的代码都写在一个文档里面.如果你的项目比较大,那么把所有功能写在一个文件里就非常不便于后期维护.为了提高我们代码的可读性,降低后期维护的成 ...

  5. 凯云水利水电造价工程系统 (三) 材料单价模块(1)

    凯云水利水电造价工程系统 (三)  材料单价模块(新增) 3.3-3模块功能的具体实现 3.4功能4名称:材料单价 3.4-1功能实现 材料单价包含两个部分:一个是材料分类,一个是材料单价.材料分类的 ...

  6. 电力电子变压器。 整流级采用级联H桥多电平拓扑,由三个H桥模块级联

    电力电子变压器. 整流级采用级联H桥多电平拓扑,由三个H桥模块级联,将工频交流转换为直流,级联多电平可以减小开关器件的电压应力和开关频率. 中间级采用单主动桥和高频隔离变压器. 输出级采用三相逆变器. ...

  7. ansible自动化运维详解(三)ansible常用模块续

    文章目录 ansible自动化运维详解(三)ansible常用模块续 四.ansible常用模块(2) 4.10.yum_repository 4.11.dnf 4.12.service 及 fire ...

  8. 《ASP.NET MVC 5 破境之道》:概述

    第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. ...

  9. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

最新文章

  1. KiCAD初学者指南
  2. 在windows系统和linux系统中查询IP地址命令的不同
  3. 拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
  4. excel删除无尽空白行_【辅导员说】学好办公软件word、excel、ppt的意义
  5. elasticsearch5.5.2离线安装x-pack
  6. Access to the path Library\UnityAssemblies\UnityEngine.xml is denied.
  7. c#命名规范(转载)
  8. 无法通过百度联盟申请的常见原因
  9. 读笔:《重来也不会好过现在》
  10. 20172328《程序设计与数据结构》第二周学习总结
  11. hbuilder git 新建共享项目
  12. 依赖计算机英语作文,过度依赖电脑的危害的英文作文
  13. [实用代码] 基于CH554电容触摸屏IIC转USB转IIC方案代码分享
  14. 国内主要遥感期刊投稿信息
  15. 微信公众平台的设计与开发之道
  16. arcgis之地理配准
  17. EPICS ‘makeBaseApp’ IOC
  18. Java对接阿里云短信平台(快速上手)
  19. “云”溪笔谈 | 走完过渡期“沉浸式视频云”时代来临
  20. aws lambda_Google Cloud Run与AWS Lambda

热门文章

  1. coredump_filter的设置
  2. C++使用localtime函数需要注意的地方
  3. Redis Config Get 命令
  4. Windows编程—Windows驱动中定时器的使用
  5. 设计模式:原型模式(C++)【克隆羊多莉】
  6. iOS - UIEvent事件及UIResponder响应者
  7. C#单元测试如何查看输出的调试信息?
  8. Standard C Episode 1
  9. ubuntu虚拟机和主机互ping及secureCRT使用
  10. POJ 2186 Popular Cows(Tarjan)