鸿蒙开发实践——ZRouter让系统路由表变的更简单(轻量级动态路由库)

介绍

ZRouter是一款轻量级的动态路由库,基于Navigation系统路由表和Hvigor插件实现的方案。主要特性:

  • 对Navigation组件简化使用,封装一系列简单易用API,支持链式调用,无需再关注路由表的配置,保持着对Navigation组件零侵入零耦合;

  • 支持多个拦截器(支持优先级和中断拦截)和全局拦截器,可实现页面跳转和显示、埋点、登录等拦截处理;

  • 支持自定义URL路径跳转配置,可以通过URL路径来跳转原生不同页面;

  • 支持第三方Navigation的系统路由表使用本库API;

  • 支持跨多级页面参数的回传监听;

  • 支持启动模式、混淆、嵌套Navigation;

  • @Route装饰器上的name属性支持使用静态常量;

  • 后续会支持生命周期的监听、组件化通信(待实现)。

ZRouter侧重于路由跳转与模块解耦,以及组件化的通信(待实现);对Navigation组件没有任何耦合,不做任何的限制把自主权交给开发者。 

两行代码就可以完成页面的跳转,如下: 

ZRouter已上架录入到华为鸿蒙生态伙伴组件专区

router-register-plugin插件的使用

下载安装

在项目根目录的hvigor目录的hvigor-config.json5文件中配置安装

  "dependencies": {
//    "router-register-plugin":"file:../plugins/router-register-plugin-1.0.2.tgz"
    "router-register-plugin":"1.0.7"
  },

最后记得Sync Now或重新build让插件安装生效。或者使用hvigorw命令行工具执行任一命令,命令行工具会自动执行安装构建依赖。

初始配置

在每个模块中的hvigorfile.ts文件导入router-register-plugin插件模块的routerRegisterPlugin函数和PluginConfig 接口,routerRegisterPlugin 函数是自定义Hvigor插件的入口函数,PluginConfig是一个配置对象,用于定义插件的行为。

import { routerRegisterPlugin, PluginConfig } from 'router-register-plugin'

const config: PluginConfig = {
  scanDir: "src/main/ets/components",
  logEnabled: false,
  viewNodeInfo: false,
}
export default {
    system: harTasks,  
    plugins:[routerRegisterPlugin(config)] 
}

上面代码初始化PluginConfig配置对象,包括要扫描的目录(scanDir)和两个布尔属性(logEnabled 和 viewNodeInfo),用于控制日志记录和查看节点信息的功能;然后将配置对象作为参数传入到routerRegisterPlugin入口函数中,最后将routerRegisterPlugin()函数添加到plugins数组中。

  • scanDir:建议是页面目录,这样可以更精准扫描目标文件。

  • logEnabled:日志记录开关。

  • viewNodeInfo:查看节点信息的开关,只有logEnabled和viewNodeInfo同时开启才会生效。

PluginConfig配置对象还有其他属性,但不建议使用,使用默认值即可。如下:

export class PluginConfig {
    /**
     * 扫描的目录
     * src/main/ets/
     */
    scanDir: string = ''
    /**
     * builder函数注册代码生成的目录
     * src/main/ets/_generated/
     */
    generatedDir: string = ''
    /**
     * Index.ets目录
     * 模块下目录下
     */
    indexDir: string = ''
    /**
     * module.json5文件路径
     * src/main/ets/module.json5
     */
    moduleJsonPath: string = ''
    /**
     * 路由表路径
     * src/main/ets/resources/base/profile/route_map.json
     */
    routerMapPath: string = ''
    /**
     * 是否打印日志
     */
    logEnabled: boolean = true

    /**
     * 查看节点信息,只有与logEnable同时为true才会打印输出
     */
    viewNodeInfo: boolean = false

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值