尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【HarmonyOS】鸿蒙应用子模块module资源如何获取
在多模块的鸿蒙应用中获取子模块HAR/HSP的资源主要有三种方式。从API 12开始官方推荐的语法是$r([模块名].type.name)和$rawfile([模块名].filename)这让跨模块资源的访问变得和访问本模块资源一样直观。下面整理了三种主流方案你可以根据实际情况选择。方案一使用$r/$rawfile直接引用推荐这是从 API 12 开始支持的语法写法最简洁也最符合直觉。ts// 引用 HSP/HAR 模块中的字符串资源 Text($r([hsp_module_name].string.test_string)) .fontSize($r([hsp_module_name].float.font_size)) .fontColor($r([hsp_module_name].color.font_color)) // 引用 HSP/HAR 模块 rawfile 目录下的图片资源 Image($rawfile([hsp_module_name].icon.png))关键点[模块名]必须是方括号括起来且与oh-package.json5中定义的模块名完全一致。如果rawfile下有多层目录需要从rawfile后面的第一个目录开始写例如$rawfile([hsp].oneFile/twoFile/icon.png)。注意使用这种方式编译器无法在编译时校验资源是否存在需要开发者自行确保资源在对应模块中。方案二通过createModuleContext创建上下文获取如果需要通过代码动态获取或需要更精细地控制资源加载可以使用createModuleContext接口来获取指定模块的Context然后通过ResourceManager来获取资源。注意getContext(this).createModuleContext()从API Version 12开始废弃推荐使用application.createModuleContext替代。tsimport { application, common } from kit.AbilityKit; import { BusinessError } from kit.BasicServicesKit; try { // 1. 通过 application 创建子模块的 Context (API 12) const moduleContext await application.createModuleContext(this.context, 模块名); // 2. 通过这个 Context 获取资源 const stringRes await moduleContext.resourceManager.getStringByNameSync(app.string.xxx); const rawFd await moduleContext.resourceManager.getRawFd(test.mp3); } catch (error: BusinessError) { // 处理获取失败的情况 }说明这种方式本质上是为不同模块创建了一个独立的上下文环境从而允许你通过它去访问该模块独有的资源目录。方案三封装资源管理类导出这是一种比较经典的工程化方案。在子模块中定义一个类将资源以Resource类型的形式封装好并导出其他模块通过调用这个类的方法来获取资源。1. 在子模块如hsp_library中封装ts// hsp_library/src/main/ets/ResManager.ets export class HspResManager { // 封装图片资源 static getAppIcon(): Resource { return $r(app.media.app_icon); } // 封装字符串资源 static getAppDesc(): Resource { return $r(app.string.shared_desc); } }ts// hsp_library/Index.ets export { HspResManager } from ./src/main/ets/ResManager;2. 在使用方模块如entry中调用tsimport { HspResManager } from hsp_library; // 使用 Text(HspResManager.getAppDesc()) .fontSize(20) Image(HspResManager.getAppIcon()) .height(100)优点编译时检查、代码提示完善、资源归属清晰。 资源覆盖与优先级规则当多个模块定义了同名资源时遵循以下覆盖规则优先级从高到低当前 HAP 包自身模块。直接依赖的 HAR 模块。如果依赖了多个 HAR按照oh-package.json5中dependencies的声明顺序前面的优先级高于后面的。传递依赖的 HAR 模块。小技巧为了避免资源被意外覆盖可以为不同模块的资源添加命名前缀例如moduleA_primary_color。
RELATED

相关推荐

大模型微调实战:从LoRA到QLoRA的完整流程与避坑指南

大模型微调实战:从LoRA到QLoRA的完整流程与避坑指南

1. 先搞清楚大模型微调到底解决什么实际问题大模型微调不是让模型从零开始学习,而是在已有能力基础上做定向优化。最常见的场景是你有一个通用大模型,但需要它在特定领域表现更好——比如让模型更懂医疗问答、更擅长代码生成、或者更符合你公司的对话风格…

📅 2026/11/10 15:02:40
收藏必备!小白程序员也能快速上手学习大模型,打造智能病历生成神器

收藏必备!小白程序员也能快速上手学习大模型,打造智能病历生成神器

本文深入剖析了医疗领域病历书写与管理的痛点,如效率低下、质量参差不齐、合规风险等。方案融合语言大模型、NLP、医疗知识图谱等先进技术,构建全流程智能病历辅助生成服务体系。文章详细阐述了其核心功能,包括数据采集、智能生成、质量校验、…

📅 2026/9/11 21:50:07
PixWorld:像素空间统一实现3D场景生成与重建的技术解析

PixWorld:像素空间统一实现3D场景生成与重建的技术解析

如果你正在为3D场景生成项目头疼——无论是游戏开发、虚拟现实内容制作,还是建筑可视化,可能都经历过这样的困境:传统方法要么依赖复杂的多阶段流程,生成效果粗糙;要么因为中间表示(如体素、点云或隐式神经…

📅 2026/9/22 3:30:45
MORE NEWS

更多资讯

📰

电工证补贴领取标准怎么拿?全国通用证怎么考不怕被坑

电工证补贴领取标准怎么拿?全国通用证怎么考不怕被坑 你是不是也遇到过这种情况:拿着电工证,却不知道补贴怎么领,或者担心报名被中介骗钱?别急,这篇文章帮你理清楚电工证补贴领取标准和全国通用证的报考方法,让你少走弯路、不被套路。…

📰

大理考电工证去哪里考 通过率揭秘:证书过期了不知道怎么复审延期

大理考电工证去哪里考 通过率揭秘:证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,这事儿我见过太多人栽跟头。尤其是像大理这样的地方,特种作业操作证一旦到期,轻则被单位暂停上岗,重则影响职业晋升甚至被罚款。今天我来聊聊【大理考电工…

📰

台儿庄区电工证官方回应:工地太忙根本没时间复习考试?全流程办理指南来了

台儿庄区电工证官方回应:工地太忙根本没时间复习考试?全流程办理指南来了 工地太忙根本没时间复习考试,这事儿确实让不少电工兄弟头疼。尤其是像你这种在现场管理的,天天跑工地、盯进度,哪还有时间去刷题、备考?但问题是,台儿庄区电工证不办不行,不复…

📰

考个电工证要什么学历有效期多久

电工证要什么学历才能考?上岗必备这些信息别错过 证书过期了不知道怎么复审延期?别慌,很多电工朋友都遇到过这种情况。电工证作为上岗必备的资质之一,不仅关系到你的职业发展,也直接影响你能否顺利上岗作业。今天我们就来聊聊 考个电工证要什么学历…

📰

电工证分类解说:新手怎么避坑?通过率揭秘全在这了

电工证分类解说:新手怎么避坑?通过率揭秘全在这了 不知道去哪报名怕被中介坑?别慌,电工证分类其实有章可循,只要搞懂类型和流程,避坑不是问题。本文就从洛阳转岗从业者的角度,带你一步步了解电工证分类及报考全流程,还附带通过率揭秘,让你少走弯路,…

📰

工地太忙根本没时间复习考试 正反转低压电工证在哪考最靠谱

工地太忙根本没时间复习考试 正反转低压电工证在哪考最靠谱 工地太忙根本没时间复习考试,这几乎是每个一线施工人员的共同感受,尤其是那些需要考取 正反转低压电工证…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬