HarmonyOs @hadss/hmrouter路由接入

参考文档:官方文档

在根目录oh-package.json5配置

javascript 复制代码
{
  "dependencies": {
    "@hadss/hmrouter": "^1.0.0-rc.11"
  }
}

加入路由编译插件

  1. hvigor/hvigor-config.json文件
javascript 复制代码
{
  "dependencies": {
    "@hadss/hmrouter-plugin": "^1.0.0-rc.11"
    // 使用npm仓版本号
  },
  // ...其余配置
}
  1. 工程根目录的hvigorfile.ts
javascript 复制代码
import { appTasks } from '@ohos/hvigor-ohos-plugin';
export default {
  system: appTasks,
  plugins:[]
}
  1. entry模块的hvigorfile.ts
javascript 复制代码
import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import { hapPlugin } from '@hadss/hmrouter-plugin';

export default {
  system: hapTasks,
  plugins: [hapPlugin()] // 使用HMRouter标签的模块均需要配置,与模块类型保持一致
}

工程配置

build-profile.json5

javascript 复制代码
{
  "app": {
    "products": [
      {
        "name": "default",
        "signingConfig": "default",
        "compatibleSdkVersion": "5.0.0(12)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "useNormalizedOHMUrl": true  // 重点这个设置为true
          }
        }
      }
    ],
    // ...其余配置
  }
}

初始化路由框架

大致位置可通过windowStage.loadContent来查找,具体怎么找启动页面可参考上篇文章

javascript 复制代码
// PhoneAbility.ets
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    HMRouterMgr.init({
      context: this.context
    })
  }
}

定义路由入口

javascript 复制代码
// Index.ets
import { HMDefaultGlobalAnimator, HMNavigation } from "@hadss/hmrouter";
import { AttributeUpdater } from "@kit.ArkUI";

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

  build() {
    // @Entry中需要再套一层容器组件,Column或者Stack
    Column(){
      // 使用HMNavigation容器
      HMNavigation({
        navigationId: 'mainNavigation', homePageUrl: 'YDMainPage',
        options: {
          standardAnimator: HMDefaultGlobalAnimator.STANDARD_ANIMATOR,
          dialogAnimator: HMDefaultGlobalAnimator.DIALOG_ANIMATOR,
          modifier: this.modifier
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}

class MyNavModifier extends AttributeUpdater<NavigationAttribute> {
  initializeModifier(instance: NavigationAttribute): void {
    instance.hideNavBar(true);
  }
}

路由定义

javascript 复制代码
import { HMRouter } from "@hadss/hmrouter"
// 通过@HMRouter来定义路由,无需在main_pages.json中定义
@HMRouter({
  pageUrl: "MainPage"
})
@Component
export struct MainPage {
  build() {
    Column(){
      Text("首页").fontSize(30).fontWeight(FontWeight.Bold)
    }
    .width('100%')
    .height('100%')
    .backgroundColor("#f4f5f9")
    .justifyContent(FlexAlign.Center)
  }
}

这里插件就引入完成了,可正常使用了,其余使用可参考官网文档
注意⚠️:因为这个插件,预览器则无法正常使用,需在模拟器查看

这个表示预览器不兼容

相关推荐
lqj_本人6 小时前
鸿蒙electron跨端框架PC今日打卡实战:频率、连续天数和今日进度怎么放进桌面工具
华为·harmonyos
GitCode官方11 小时前
直播预约|开源鸿蒙PC命令行工具迁移实战:从环境搭建到真机验证全流程拆解
人工智能·华为·开源·harmonyos·atomgit
lqj_本人11 小时前
鸿蒙electron跨端框架PC工志簿实战:项目、工时、阻塞和下一步都要有位置
数据库·华为·harmonyos
胡琦博客16 小时前
Tauri 如何跑到鸿蒙上?从 tauri-demo 看 OpenHarmony 适配链路
华为·harmonyos
nashane17 小时前
HarmonyOS 6学习:文件打开方式应用重复的根治方案与最佳实践
学习·华为·harmonyos
Swift社区17 小时前
AI + 鸿蒙 App:下一代应用架构
人工智能·架构·harmonyos
ZHW_AI课题组17 小时前
调用华为云API实现图像标签识别
图像处理·华为·华为云
枫叶丹417 小时前
【HarmonyOS 6.0】Enterprise Space Kit:空间管理服务深入解析
开发语言·华为·harmonyos