HarmonyOS 鸿蒙Next三层架构问题
HarmonyOS 鸿蒙Next三层架构问题 看了官方的三层架构介绍,还有官方demo,好像都没有讲到如果项目的主题色,图片图标,或者国际化配置的json文件,是否需要放在common里面。看到官方demo的主题色配置文件,可能在common的har包里面的base、dark有,在feature的har包也会有一模一样一份。 问题:这样会不会很繁琐,还是有更好的方式呢。har包可否引入其他har的颜色值
我遇到过一个工程,他们这些资源文件是一个独立的sdk,里面放国际化的一些和资源
更多关于HarmonyOS 鸿蒙Next三层架构问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
那如果在feature的har使用$()怎么去拿到common的har包的资源呢
先在feature包里把资源包导入引用,然后再${}
HarmonyOS Next采用分层架构,主要包括应用层、框架层和系统服务层。应用层负责UI交互;框架层提供ArkTS/ArkUI开发框架与API;系统服务层包含分布式能力、安全等核心服务。三层解耦设计支持一次开发多端部署。
在HarmonyOS Next的三层架构中,对于主题色、图片图标、国际化资源这类全局性资源的管理,确实有明确的最佳实践。
核心原则是:资源应定义在基础层(common模块),并通过依赖关系向上层(feature模块)提供。
-
资源应集中定义在common层:项目的主题色、通用图标、国际化字符串等全局资源,强烈建议统一放在
common模块的resources目录下。这是资源的“单一事实来源”,便于统一管理和维护。 -
上层模块通过依赖使用资源:
feature模块或product模块通过在oh-package.json5中声明对common模块的依赖,来引用这些资源。不需要、也不应该在每个feature模块中复制一份相同的资源文件。官方Demo中若出现重复,可能是为了演示模块的独立性,但在实际项目开发中,应避免这种冗余。 -
如何正确引用:
- 在你的
feature模块的oh-package.json5文件中,添加对common模块的依赖,例如:"dependencies": { "common": "file:../common" }。 - 在
feature模块的代码或布局文件中,可以直接通过$r('app.type.name')或$rawfile('filename')等方式引用资源。构建工具会根据模块依赖关系,正确地从common模块中定位资源。 - har包可以引用其依赖的har包中的资源,这是模块化设计的核心能力之一。
- 在你的
结论与建议:
将全局资源集中放置在common层是推荐的方式,这并不繁琐,反而是保证一致性和可维护性的关键。请检查并确保您的feature模块正确声明了对common模块的依赖,然后即可直接使用其中定义的资源,无需复制。重复的资源文件会增加维护成本并可能导致不一致,应予以消除。


