- 入门
介绍 体系结构 升级到 18.0 版本
- 开发
新增页面 新增业务组件 和服务端进行交互 使用第三方类库 构建和发布 升级脚手架 全局配置项 如何开始 服务端渲染(SSR)
- 进阶
主题系统 图表 国际化 用户认证 ACL Mock 缓存 优化 编码规范建议
- 其他
命令行工具 常见问题 模块注册指导原则 贡献指南 更新日志
一直以来 AppModule
、CoreModule
、SharedModule
模块使用没有很明确的规范,很容易让产生乱用。Angular模块目标是为了使组件、指令、服务和管道功能块更内聚,并每一个功能区域形成独立的业务领域或实用工具的集合。
根模块,用于引导 Angular 启动;它非常适合导入一些需要在整个应用到处需要的模块,例如:主题系统、用户主认证模块、权限模块等模块,以及一些全局性HTTP拦截器、国际化服务等。
核心模块只会被导入一次,它等同 AppModule
,但我们更应该把它当成一个纯服务类模块,例如:消息、数据访问等。
我们叫它共享模块;它不应该出现 providers
,因为 ShareModule
会在所有业务模块中被导入,这会导致服务被覆盖。
NG-ZORRO、@yelon/abc、@yelon/chart 等从版本11开始由一次性导入改成按需导入,为此 NG-YUNZAI 提炼了两个文件 shared-yelon.module.ts
、shared-zorro.module.ts
将一些整个项目经常用到的模块合并成一个叫 SharedModule
模块内,这也就是为什么需要在业务模块内第一时间导入它。虽然这种方式可以减少不必要的导入代码,但同时也会引起编译速度,因此不建议把所有组件都放进 SharedModule
内,尽可能将需要用到的模块三次以上使用才放进这里;否则务必在业务模块内自行导入。
应 导入模块:
Angular 模块:BrowserModule
、BrowserAnimationsModule
、HttpClientModule
YunzaiThemeModule
主题系统
YunzaiAuthModule
用户认证模块
YunzaiACLModule
权限模块
国际化模块
应 包含服务:
Angular 国际化
HTTP 拦截器
Angular 启动服务
ng-zorro-antd
基础组件服务
@yelon/abc
业务组件服务
作用: 贯穿整个应用的定义。
应 仅只留 providers
属性。
作用: 一些通用服务,例如:用户消息、HTTP数据访问。
应 包含定义:
应用通用自定义业务组件
应 导入模块:
Angular 通用模块:CommonModule
、FormsModule
、RouterModule
、ReactiveFormsModule
ng-zorro-antd
基础组件模块
@yelon/abc
业务组件模块
第三方通用依赖组件模块
应 导出所有包含的模块。
不应 有 providers
属性。
作用: 一些通用自定义、第三方组件定义,减少业务模块的导入。
业务模块应该包括业务定义模块和路由模块。
模块
应 导入模块:
对应的路由模块
不应:
导出任何组件
尽可能不要使用 providers
属性
路由模块
应 只包括路由的 import
、exports
模块。