【HarmonyOS】鸿蒙目前最好用的路由管理 HMRouter (一)

打印 上一主题 下一主题

主题 984|帖子 984|积分 2952

【HarmonyOS】鸿蒙目前最好用的路由管理 HMRouter (一)

一、前言

经过routernavigation,直到HMRouter的横空出世。鸿蒙应用内最强的路由管理终于出现了。被疯狂吐槽的router因为各种路由需求无法满足,使用僵化,已经被官方放弃,不保举使用。更新出navigation被TOP200应用疯狂适配后,爆出一堆bug和新需求。如今HMRouter的出现,终于可以让各人在路由管理上,丝滑操作了。
比如在Android和IOS上最常见的回退需求。router和navigation都无法做到。A-B-C-D三级页面。D页面返回到A,可以直接使用pop指定跳转的url举行实现。
本章讲授HMRouter是什么,能力是什么,怎样快速集成。后续章节对其扩展特性功能举行详细讲授。
二、HMRouter

1.知其然才气知其所以然。我们要先搞清晰HMRouter是什么。
HMRouter作为路由管理,框架底层对Navigation相关能力举行了封装,让我们无需关心繁琐的navigation逻辑。
2.HMRouter都能做什么?
能力怎样?具备页面跳转、弹窗提示、转场动效、数据加载、维测场景。总的来说,它是HarmonyOS上页面跳转的场景办理方案,重要办理应用内原生页面间相互跳转的题目。
3.HMRouter是什么形态?
作为插件集成到项目中举行使用,目前代码开源在Gitee上,也可以直接拿源码模块使用,或者自己魔改(不过要注意在商业项目中使用,开源协议的题目)。
三、快速使用

(1)集成HMRouter插件
1.首先需要下载依赖

  1. "dependencies": {
  2.     "@hadss/hmrouter": "^1.0.0-rc.5"
  3.   }
复制代码
2.编译插件配置

  1.   "dependencies": {
  2.     "@hadss/hmrouter-plugin": "^1.0.0-rc.4" // 使用npm仓版本号
  3.   },
复制代码

  1. import { hapTasks } from '@ohos/hvigor-ohos-plugin';
  2. import { hapPlugin } from "@hadss/hmrouter-plugin";
  3. export default {
  4.     system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
  5.     plugins: [hapPlugin()]         /* Custom plugin to extend the functionality of Hvigor. */
  6. }
复制代码
(2)初始化工具
在EntryAbility,你的启动模块中配置初始化工具。

  1.   onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  2.     hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  3.     HMRouterMgr.init({
  4.       context: this.context
  5.     });
  6.   }
复制代码
(3)初始化首页
与Navigation雷同,页面build中需要包裹容器举行页面的表现。
与Navigation不同的是,该容器需要在,Column或者Stack之内套着使用。

代码文本参见下方的DEMO代码示例。
(4)配置跳转页
跳转到的目标页面,通过HMRouter路由注解标签的情势,举行页面信息的配置。设置瞄点,使上级页面可跳转过来。

代码文本参见下方的DEMO代码示例。
(5)完成(实现底子的页面跳转和返回)

DEMO代码示例:
Index.ets 首页
  1. import { AttributeUpdater } from '@kit.ArkUI';
  2. import { HMDefaultGlobalAnimator, HMNavigation, HMRouterMgr } from '@hadss/hmrouter';
  3. /**
  4. * 界面样式公用函数
  5. */
  6. class NavModifier extends AttributeUpdater<NavigationAttribute> {
  7.   initializeModifier(instance: NavigationAttribute): void {
  8.     instance.mode(NavigationMode.Stack);
  9.     instance.navBarWidth('100%');
  10.     instance.hideTitleBar(true);
  11.     instance.hideToolBar(true);
  12.   }
  13. }
  14. @Entry
  15. @Component
  16. struct Index {
  17.   modifier: NavModifier = new NavModifier();
  18.   aboutToAppear(): void {
  19.   }
  20.   build() {
  21.     // @Entry中需要再套一层容器组件,Column或者Stack
  22.     Column(){
  23.       // 使用HMNavigation容器
  24.       HMNavigation({
  25.         navigationId: 'mainNavigation', options: {
  26.           // 设置动画样式
  27.           standardAnimator: HMDefaultGlobalAnimator.STANDARD_ANIMATOR,
  28.           // 设置弹框动画样式
  29.           dialogAnimator: HMDefaultGlobalAnimator.DIALOG_ANIMATOR,
  30.           // 设置页面navigation的参数,标题栏,工具栏,bar那些
  31.           modifier: this.modifier
  32.         }
  33.       }) {
  34.         Row() {
  35.           Text("点击跳转")
  36.             .fontSize(50)
  37.             .onClick(()=>{
  38.               HMRouterMgr.push({pageUrl: 'pageB'})
  39.             })
  40.         }
  41.         .width('100%')
  42.         .height('100%')
  43.         .backgroundColor(Color.Yellow)
  44.         .justifyContent(FlexAlign.Center)
  45.       }
  46.     }
  47.     .height('100%')
  48.     .width('100%')
  49.   }
  50. }
复制代码
PageB.ets 跳转页
  1. import { HMRouter, HMRouterMgr } from "@hadss/hmrouter"
  2. // HMRouter 路由标签使用在自定义组件struct上,且该自定义组件需要添加export关键字
  3. @HMRouter({ pageUrl: 'pageB' })
  4. @Component
  5. export struct PageB {
  6.   build() {
  7.     Row(){
  8.       Text("点击返回")
  9.         .fontSize(50)
  10.         .onClick(()=>{
  11.           HMRouterMgr.pop();
  12.         })
  13.     }.width("100%").height("100%").backgroundColor(Color.Red).justifyContent(FlexAlign.Center)
  14.   }
  15. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

悠扬随风

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表