Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
8a2b87b1
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8a2b87b1
编写于
7月 28, 2023
作者:
H
Haoming Luo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改'导出HSP内资源'部分
Signed-off-by:
N
Haoming Luo
<
mzfslhm@163.com
>
上级
9973592f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
5 deletion
+18
-5
zh-cn/application-dev/quick-start/in-app-hsp.md
zh-cn/application-dev/quick-start/in-app-hsp.md
+18
-5
未找到文件。
zh-cn/application-dev/quick-start/in-app-hsp.md
浏览文件 @
8a2b87b1
...
...
@@ -82,12 +82,20 @@ export { MyTitleBar } from './components/MyTitleBar'
```
#### 通过$r访问HSP中资源
注意,在
`HSP`
中,通过
`$r`
/
`$rawfile`
可以使用本模块
`resources`
目录下的资源。
如果使用相对路径的方式,例如:
在组件中,经常需要使用到字符串、颜色值、图片等资源。
`HSP`
中的组件同样需要使用资源,我们一般将其使用的资源放在HSP包内,以符合高内聚低耦合的原则,同时使得多处调用时资源可以只维持一个拷贝。若要使用到HSP中资源,可以像以上代码一样,通过
`$r`
/
`$rawfile`
可以使用本模块
`resources`
目录下的资源。
不推荐使用相对路径的方式,容易引用错误路径。例如:
在
`HSP`
模块中使用
`Image("common/example.png")`
,实际上该
`Image`
组件访问的是
`HSP调用方`
(如
`entry`
)下的资源
`entry/src/main/ets/common/example.png`
。
### 导出HSP中资源
封装对外提供资源的接口类:
HSP内资源有时也需要在外部其它包中直接调用,这时可以使用一个类来提供对外导出资源的接口,该方案的好处是:
-
HSP开发者可以控制自己需要导出的资源,不需要对外暴露的资源可以不用导出
-
使用方无须感知HSP内部的资源名称,HSP内部的资源名称变化时也不需要使用方跟着修改
其具体实现如下:
封装对外提供资源的接口类:
注:用
`$r`
方法返回的是Resource对象形式的资源,可以被组件直接使用,但在一般场景下要对其进行解封装才能直接使用,这时需要另写函数获取解封装后资源。
```
ts
// library/src/main/ets/ResManager.ets
export
class
ResManager
{
...
...
@@ -97,6 +105,10 @@ export class ResManager{
static
getDesc
(){
return
$r
(
"
app.string.shared_desc
"
);
}
static
getDescStr
(){
// 先通过当前上下文获取hsp模块的上下文,再获取hsp模块的resourceManager,然后再调用resourceManager的接口获取Resource对象中资源(返回值为异步结果Promise对象)
return
getContext
().
resourceManager
.
getStringValue
(
$r
(
"
app.string.shared_desc
"
));
}
}
```
...
...
@@ -155,12 +167,13 @@ struct Index {
Log
.
info
(
"
add button click!
"
);
this
.
message
=
"
result:
"
+
add
(
1
,
2
);
})
// ResManager返回Resource对象
Image
(
ResManager
.
getPic
())
.
width
(
"
100%
"
)
Button
(
'
getStringValue
'
)
.
onClick
(()
=>
{
//
先通过当前上下文获取hsp模块的上下文,再获取hsp模块的resourceManager,然后再调用resourceManager的接口获取资源
getContext
().
createModuleContext
(
'
library
'
).
resourceManager
.
getStringValue
(
ResManager
.
getDesc
()
)
//
ResManager返回Promise对象(Resource对象解封装结果)
ResManager
.
getDescStr
(
)
.
then
(
value
=>
{
console
.
log
(
"
getStringValue is
"
+
value
);
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录