一、背景
在鸿蒙开发中,组件和模块两者是属于部分与整体的包含关系,核心是为了实现模块化拆分,组件化复用,让开发更高效,维护更简单。
二、组件 (Component)
2.1、是什么?
由@Component装饰的结构体(ArkTS),每个组件通过对数据和方法的简单封装,实现独立的可视、可交互功能单元。组件之间相互独立,随取随用,也可以在需求相同的地方重复使用。
2.2、目的
解决 "UI / 功能重复开发" 问题,解耦应用功能,实现UI能力复用与独立管理
如:一个UI块出现 ≥ 2 的场景,就可以考虑UI组件的封装
2.3、怎么用
举例:我这个轮播图的UI效果在2个组件中都有使用到,这种属于UI/功能重复的开发,可以考虑封装公共的UI组件,在组件内书写UI,具体界面与能力由需求方实现
第一步:封装公共轮播图组件

第二步:页面内使用

三、模块 (Module)
3.1、是什么?
模块是按业务或功能划分的独立代码目录,一个模块对应一个功能的完整代码、资源、配置和依赖的集合,可以被独立编译、测试和部署
3.2、目的
解决 "代码混乱、协作困难" 问题,实现工程的解耦、团队并行开发、功能复用,并优化编译速度
3.3、怎么用
参考我写的这篇文章,关于模块的使用有两种方式👇
https://blog.csdn.net/weixin_71403100/article/details/155428242?spm=1001.2014.3001.5502
四、两者的关系
两者是属于部分与整体的包含关系,一个模块内(特别是Entry/Feature HAP)可以包含一个或多个组件;一个组件 必须存在于某个模块中,模块是组件的容器和载体
五、两者的区别对比
| 对比项 | 组件(Component) | 模块(Module) |
|---|---|---|
| 大小 | 最小(单个 UI / 功能单元) | 较大(一组相关功能集合) |
| 核心作用 | 复用 UI 和独立逻辑 | 拆分业务、独立维护、跨项目复用 |
| 存在形式 | 单个.ets文件(@Component装饰) |
独立目录(含组件、页面、资源等) |
| 配置文件 | 无需单独配置 | 必须有build-profile.json5等 |
| 编译方式 | 随模块一起编译 | 可独立编译、打包成 HAR 包 |