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

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

##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#

一、前言

经过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.首先需要下载依赖

image.png

"dependencies": {
   "@hadss/hmrouter": "^1.0.0-rc.5"
 }

2.编译插件配置

image.png

"dependencies": {
  "@hadss/hmrouter-plugin": "^1.0.0-rc.4" // 使用npm仓版本号
},

image.png

import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import { hapPlugin } from "@hadss/hmrouter-plugin";

export default {
    system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
    plugins: [hapPlugin()]         /* Custom plugin to extend the functionality of Hvigor. */
}

(2)初始化工具 在EntryAbility,你的启动模块中配置初始化工具。

image.png

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

(3)初始化首页 与Navigation相同,页面build中需要包裹容器进行页面的显示。 与Navigation不同的是,该容器需要在,Column或者Stack之内套着使用。

image.png

代码文本参见下方的DEMO代码示例。

(4)配置跳转页 跳转到的目标页面,通过HMRouter路由注解标签的形式,进行页面信息的配置。设置瞄点,使上级页面可跳转过来。

image.png

代码文本参见下方的DEMO代码示例。

(5)完成(实现基础的页面跳转和返回)

image.png

image.png

DEMO代码示例: Index.ets 首页

import { AttributeUpdater } from **********';
import { HMDefaultGlobalAnimator, HMNavigation, HMRouterMgr } from '@hadss/hmrouter';

/**
 * 界面样式公用函数
 */
class NavModifier extends AttributeUpdater<NavigationAttribute> {
  initializeModifier(instance: NavigationAttribute): void {
    instance.mode(NavigationMode.Stack);
    instance.navBarWidth('100%');
    instance.hideTitleBar(true);
    instance.hideToolBar(true);
  }
}

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

  aboutToAppear(): void {

  }

  build() {
    // @Entry中需要再套一层容器组件,Column或者Stack
    Column(){
      // 使用HMNavigation容器
      HMNavigation({
        navigationId: 'mainNavigation', options: {
          // 设置动画样式
          standardAnimator: HMDefaultGlobalAnimator.STANDARD_ANIMATOR,
          // 设置弹框动画样式
          dialogAnimator: HMDefaultGlobalAnimator.DIALOG_ANIMATOR,
          // 设置页面navigation的参数,标题栏,工具栏,bar那些
          modifier: this.modifier
        }
      }) {
        Row() {
          Text("点击跳转")
            .fontSize(50)
            .onClick(()=>{
              HMRouterMgr.push({pageUrl: 'pageB'})
            })
        }
        .width('100%')
        .height('100%')
        .backgroundColor(Color.Yellow)
        .justifyContent(FlexAlign.Center)
      }
    }
    .height('100%')
    .width('100%')
  }
}

PageB.ets 跳转页

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

// HMRouter 路由标签使用在自定义组件struct上,且该自定义组件需要添加export关键字
@HMRouter({ pageUrl: 'pageB' })
@Component
export struct PageB {

  build() {
    Row(){
      Text("点击返回")
        .fontSize(50)
        .onClick(()=>{
          HMRouterMgr.pop();
        })
    }.width("100%").height("100%").backgroundColor(Color.Red).justifyContent(FlexAlign.Center)
  }
}
#harmonyos#
全部评论

相关推荐

今天 01:13
门头沟学院
极力劝退985/211的硕士还拿低级(≤14级)进华为,特别是理工科类,特别是上深地区。有的人可能想能进华为就行,后面慢慢升级。有这想法的极力劝退。公司一定会有13/14级,但985/211的硕士拿这级别就是自取其辱,浪费高等教育资源。辛苦培养的硕士博士高学历人才,是为带领中华民族迈向伟大复兴的道路,是中华崛起之未来领袖人物。名校硕博,自贱身份来华为,犹如大夫挑粪,大材小用。从13/14级,即便再加班加点,年年拿a,也得n年才能达到18级成为领袖人物,并且起点决定上限,设想起点16/17级,努力奋斗,正是壮年时(35)便可成长为20-22级,甚至更高,并带领部门持续盈利,造福部门与社会。13/14级喽啰就是打工仔,按时间精力算永远成不了领袖,内部统称为人力而非人,多人就是人力矩阵,多项目搞就是项目并行,并时刻要求高效准确按时完成任务,极力压榨员工时间(包括午休,晚上下班之后时间),低级别员工想升级只能互卷工作时长和工作任务,某些部门也极其不尊重劳动法,想方设法压榨劳动剩余价值,剥夺下班自我学习提升的时间,无法提升个人其他能力,就会被锁定在当前岗位和职级。甚至要求周末加班完成工作任务,因为低级别员工即便是周末双倍工资公司也承担的起。换来的是员工时间投入,项目提前完成。另一个套路是股权,拿捏人心的利器,一来让领导极力想方设法压榨底层员工让公司更好发展,二来让底层员工有期待更加油干,三来是解决公司资金周转问题。拿今天的钱作为明年分红资金,一年卷一年,卷多了就称股权被稀释,减少分红。下个项目进一步压缩人力和研发时间。直到形成项目xx工厂,拿来即用,裁减人力,缩减成本。也就是裁员进行时。(其他带科技属性公司同理)。菊厂喜欢部队的那一套,领导犹如排连团师长,人力矩阵当排兵布阵,想打胜仗敢打敢拼是好事。但当兵是为国家,国家给予军人崇高荣誉,并附带医疗和退伍岗位安置保障。来菊厂讲部队那套,但又没部队那套福利待遇和荣誉,更多的是自私自利自我赋予荣誉。其他工作可能是工作,菊厂工作绝不是工作,是劳作,最终劳命伤财。劝勉,能跑就跑。
华为工作强度 1206人发布 投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务