HAP
HarmonyOS Ability Package,
是由代码,资源,第三方库,配置文件等打包生成的模块包
用于封装应用程序的各个模块,比如登录模块,具体某个业务模块,一个HAP中可能会包含一个或多个'UIAbility',这些Ability负责不同的用户界面和交互逻辑
实例
'UserIterfaceHAP.hap'负责用户管理界面,包括登录,注册,个人信息等
'ProductDisplayHAP.hap'负责产品展示界面,包括产品列表,详情等。
HSP
HarmonyOS Service Package(用于封装服务的逻辑模块)
业务逻辑层,负责应用的核心功能和服务,作为UI层的支撑服务,
HAR
HarmonyOS Archive(用户封装库文件,类似framework)
:如果某些业务逻辑是通用的,并且可能被多个HAP或HSP使用,那么可以将这些逻辑封装到HAR包中
模块化设计和包的拆分
表示层(UI)-HAP
HAP:每个HAP包对应一个独立的UI模块,可以根据功能模块来划分HAP,如登录模块,用户管理模块,产品模块
每个HAP专注于特定的界面逻辑,便于后续的独立开发和维护
如下:
UserInterfaceHAP.hap: 负责用户管理界面,包括登录、注册、个人信息等。
ProductDisplayHAP.hap: 负责产品展示界面,包括产品列表、详情等。
业务逻辑层HSP/HAR
HSP:HSP负责处理用户相关的业务逻辑,如登录验证,用户信息处理等不需要 Ability 能力的按需加载模块
HAR:主要是为了复用,比如将网络请求数据,数据解析等工具类封装到HAR包中,与业务无关联。
比如 CommonUtilities.har .封装常用的工具或者方法库
使用场景
发布到OHPM私仓,供公司内部其他应用使用
发布到OHPM中心仓,供其他应用使用
设计和实现策略
模块间通信
使用want进行模块间通信,
示例:
UserManagementHSP.hsp:
PaymentServiceHSP.hsp负责支付处理的业务逻辑
CommonUtilities.har:包含公用的工具类或者方法库
问题点:
HAR 重复引用带来的代码重复问题,HSP 动态加载带来的安装速度和性能问题,在实际开发过程中都会面临不同的取舍。