【HarmonyOS】HMRouter使用详解(一)环境配置

简介: 在项目中使用官方推荐的Navigation时,需要在所有的页面上都添加一层NavDestination,在代码阅读上会增加多个层级,而且还要在主页面设置对应名字的跳转等问题,配置起来比较繁琐。看到大佬开发的HMRouter使用起来方便简洁,因此,写下这篇文章记录HMRouter的使用。

背景


在项目中使用官方推荐的Navigation时,需要在所有的页面上都添加一层NavDestination,在代码阅读上会增加多个层级,而且还要在主页面设置对应名字的跳转等问题,配置起来比较繁琐。看到大佬开发的HMRouter使用起来方便简洁,因此,写下这篇文章记录HMRouter的使用。

插件配置


1.HMRouter安装

在终端中运行下面命令进行第三方库的安装。

ohpm install @hadss/hmrouter

2.添加路由编译插件

修改项目的hvigor/hvigor-config.json文件中的dependencies数组。

"dependencies": {
   
    "@hadss/hmrouter-plugin": "^1.0.0-rc.6"
  },

3.使用路由编译插件

在项目的entry/hvigorfile.ts文件中添加插件的使用。如果模块是Har则使用harPlugin(),模块是Hsp则使用hspPlugin()

4.工程配置

由于拦截器、生命周期和自定义转场动画会在运行时动态创建实例,因此需要进行如下配置,使得HMRouter路由框架可以动态导入项目中的模块。

在工程目录下的build-profile.json5中,配置useNormalizedOHMUrl属性为true。

HMRouter使用


在UIAbility中初始化路由框架

在OnCreate中初始化路由框架。

import {
    HMRouterMgr } from '@hadss/hmrouter';

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
   
    HMRouterMgr.init({
   
      context: this.context
    })
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

在首页中定义路由入口

自定义一个NavModifier类,继承AttributeUpdater

class NavModifier extends AttributeUpdater<NavigationAttribute> {
   
  initializeModifier(instance: NavigationAttribute): void {
   
    instance.mode(NavigationMode.Stack);
    instance.navBarWidth('100%');
    instance.hideTitleBar(true);
    instance.hideToolBar(true);
  }
}

然后编写页面代码

import {
    HMDefaultGlobalAnimator, HMNavigation, HMRouter, HMRouterMgr } from '@hadss/hmrouter';
import {
    AttributeUpdater } from '@kit.ArkUI';
import {
   PageModel} from '../../Models/PageModel'

@Entry
@Component
struct HomePage {
   
  modifier: NavModifier = new NavModifier();

  build() {
   
    Column() {
   
      // 使用HMNavigation容器
      HMNavigation({
   
        navigationId: 'mainNavigation', options: {
   
          standardAnimator: HMDefaultGlobalAnimator.STANDARD_ANIMATOR,
          dialogAnimator: HMDefaultGlobalAnimator.DIALOG_ANIMATOR,
          modifier: this.modifier
        }
      }) {
   
        Column({
   space:20}) {
   
          Button("TwoPage")
            .width("80%")
            .onClick(() => {
   
              HMRouterMgr.push({
   
                navigationId: "mainNavigation",
                pageUrl: "TwoPage"
              })
            })
        }
        .width('100%')
        .height('100%')
      }
    }
    .height('100%')
    .width('100%')
  }
}

HMNavigation 参数解析

  • navigationId :容器ID并且全局统一
  • homePageUrl:指定默认加载的页面
  • navigationOption:全局参数设置。
    • modifier:Navigation动态属性设置
    • standardAnimator:页面全局动画配置
    • dialogAnimator:弹窗全局动画配置
    • title:navigation的Title设置
    • menus:navigation的menus设置
    • toolbar:navigation的toolbar设置
    • systemBarStyle:navigation的systemBarStyle设置

页面设置

新建跳转的页面TwoPage,里面按钮使用HMRouterMgr.pop方法实现返回上个页面的操作。
必须加上@HMRouter装饰器,pageUrl方法来定义页面的名称

import {
    HMRouter, HMRouterMgr } from '@hadss/hmrouter'

@HMRouter({
    pageUrl: "TwoPage" })
@Component
export struct TwoPage {
   
  build() {
   
    Column({
    space: 20 }) {
   
      Button("HomePage")
        .width("80%")
        .onClick(() => {
   
          HMRouterMgr.pop({
   
            navigationId: "mainNavigation"
          })
        })
    }
    .height("100%")
    .width("100%")
  }
}

总结


这篇帖子主要关注在HMRouter的环境部署和简单的页面跳转。

这里附上HMRouter的Gitee地址

相关文章
|
7月前
|
存储 IDE 开发工具
HarmonyOS应用开发尝鲜篇:HarmonyOS快速入门
HarmonyOS应用开发尝鲜篇:HarmonyOS快速入门
|
1月前
|
API
HarmonyOS 3.1/4项目在DevEco Studio 5.0(HarmonyOS NEXT)版本下使用的问题
有读者在使用《鸿蒙HarmonyOS应用开发入门》书中的源码时遇到问题,主要原因是使用的DevEco Studio版本不同所致。本文提供了三种解决方案:1) 降级DevEco Studio至3.1版本;2) 按照5.0版本修改书中示例;3) 等待并使用《鸿蒙之光HarmonyOS NEXT原生应用开发入门》升级版书籍。
151 1
|
IDE 开发工具 开发者
HarmonyOS(鸿蒙)开发软件DevEco Studio基本配置(兼容IDEA)
HarmonyOS(鸿蒙)开发软件DevEco Studio基本配置(兼容IDEA)
768 0
HarmonyOS(鸿蒙)开发软件DevEco Studio基本配置(兼容IDEA)
|
5月前
|
Android开发 开发者
HarmonyOS和OpenHarmony区别联系
【7月更文挑战第26天】
188 17
|
13小时前
【HarmonyOS Next开发】:ListItemGroup使用
通过使用ListItemGroup和AlphabetIndexer两种类型组件,实现带标题分类和右侧导航栏的页面
19 8
|
4月前
|
开发工具 Android开发 开发者
OpenHarmony与HarmonyOS有什么区别?
如果你对HarmonyOS底层的技术感兴趣,想了解或者想对HarmonyOS做贡献,那么选择OpenHarmony。当然,如果想更进一步,做一款属于自己的操作系统,基于OpenHarmony开源项目做二次开发也是不错的选择哦。
196 1
|
4月前
|
存储 JavaScript 前端开发
HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点
在 “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(<https://coding.imooc.com/class/843.html>)视频课程中,因为讲师在该课程授课时是使用的HarmonyOS 3.1/4.0应用(API 9),如果部分学员采用了最新的HarmonyOS NEXT API,此时就会遇到API兼容性的问题。
215 0
HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点
|
7月前
|
安全 IDE 开发工具
HarmonyOS的功能及场景应用
一、基本介绍 鸿蒙HarmonyOS主要应用的设备包括智慧屏、平板、手表、智能音箱、IoT设备等。具体来说,鸿蒙系统是一款面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,通过同一套系统能力、适配多种终端形态。 二、应用HarmonyOS的设备 1、智能手机: HarmonyOS用于华为的智能手机,旨在提供更流畅的用户体验和更好的多设备协同功能。 2、平板电脑: 华为的平板电脑也可以运行HarmonyOS,使用户可以在不同设备之间共享应用和数据。 3、智能电视: HarmonyOS用于智能电视,提供智能家
266 0
|
7月前
|
JavaScript 前端开发 IDE
HarmonyOS应用开发尝鲜篇:初识HarmonyOS
HarmonyOS应用开发尝鲜篇:初识HarmonyOS
|
存储 监控 安全
HarmonyOS 实战项目
本章将介绍如何在 HarmonyOS 上进行实际项目开发。我们将从项目需求分析开始,逐步完成项目的设计、开发、测试和上线过程。
246 1