OpenHarmony: 如何通过路由跳转到一个只有页面没有UIAbility的模块
鸿蒙开发中跳转到无 UIAbility 模块页面的实用指南
一、引言
在OpenHarmony应用开发过程中,我们常常会遇到模块架构多样化的情况,比如存在一些模块只有页面却没有 UIAbility 的情况。那如何在整个应用只想使用一个 UIAbility 的前提下,实现从有 UIAbility 的模块跳转到这类特殊模块的页面?
二、模块类型相关基础知识
(一)Module 的两种类型
首先,我们得了解一下 Module 在鸿蒙开发中的分类,它主要分为“Ability”和“Library”两种类型。“Ability”类型的 Module 经过编译后对应的就是我们熟悉的 HAP(HarmonyOS Ability Package)啦,这可是应用能够安装和运行的基本单元。而“Library”类型的 Module 则对应于 HAR(HarmonyOS Archive)或者 HSP(HarmonyOS Shared Package),它们在代码和资源共享方面发挥着重要作用。
(二)HAP 的不同类型及功能
进一步来说,HAP 又可以细分为 Entry 和 Feature 这两种类型。Entry 类型的 HAP 那可是应用的主模块,通常承担着实现应用的入口界面、设计引人注目的入口图标以及实现应用的主特性功能等重要任务。而 Feature 类型的 HAP 属于应用的动态特性模块,主要用于实现应用的一些特性功能,并且它还可以配置成按需下载安装,这样在优化应用资源利用和用户下载体验方面就很有优势啦。
(三)HAR 与 HSP 的特点
再看看 HAR 和 HSP 吧,它们都是为了实现代码和资源的共享而存在的。它们都能够包含代码、C++库、资源以及配置文件等内容。不过要注意,HAR 是静态共享包,它可不支持在配置文件中声明 pages 页面;而 HSP 作为动态共享包,是支持配置 pages 页面的,这一点在我们后续要讲的跳转操作中可是个关键知识点。
三、跳转无 UIAbility 但有页面模块的解决办法
对于那些没有 UIAbility 却依然提供了可跳转页面的模块,我们应当考虑使用 Library 类型的 HSP 来实现相应的功能。那具体怎么从有 UIAbility 的模块跳转到 HSP 中的页面?下面就来看一下示例代码和相关说明吧。
(一)示例代码解析
先来看下面这段代码示例:
import { router } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Index {
@State message: string = '跳转到HSP页面';
build() {
Row() {
Column() {
Button() {
Text(this.message)
.fontSize(24)
}
.onClick(() => {
router.pushUrl({
url: '@bundle:com.example.gotohsppage/library/ets/pages/Index'
}).then(() => {
console.info("Go to hSP page success.");
}).catch((err: BusinessError) => {
console.error(`Go to hSP page failed, code is ${err.code}, message is ${err.message}.`);
})
})
.width(200)
}
.width('100%')
}
.height('100%')
}
}
在这段代码里,重点在于 router.pushUrl
这个方法。当点击按钮时,就会触发这个方法来进行页面跳转操作。
(二)router.pushUrl
方法入参 url 格式说明
这里 router.pushUrl
方法的入参中 url
的内容可是有特定模板要求的,它的格式为:'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'
。按照这个格式正确填写相应的信息,就能准确地告诉应用要跳转到哪个 HSP 模块里的具体页面啦。比如说在示例中的 '@bundle:com.example.gotohsppage/library/ets/pages/Index'
,就是指明了要跳转到名为 com.example.gotohsppage
的包下,library
这个模块里 ets/pages
路径下的 Index
页面。
- 1回答
- 0粉丝
- 0关注
- OpenHarmony: 如何实现跨模块的页面跳转功能
- 如何跳转到权限设置页面
- Video组件如何播放图库内的某一个视频
- 创建一个登录界面
- 如何发布第三方库到 OpenHarmony,并提交一个PR
- OpenHarmony: 实现文件没有默认导出,也可以默认导入
- 如何实现上下切换的页面间跳转动画
- 从0到1上架一个元服务的全流程
- OpenHarmony5.0应用开发 (二、环境搭建及第一个Hello World)
- OpenHarmony应用:利用Samples案例库开发一个简单计数器应用
- 用Cocos Creator 3.8.5 构建一个HarmonyOS NEXT应用
- 鸿蒙Navigation处理启动页跳转到首页问题
- 如何通过系统相机拍照和录像
- 鸿蒙原生开发手记:04-一个完整元服务案例
- 「Mac玩转仓颉内测版2」入门篇2 - 编写第一个Cangjie程序