介绍
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
}

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



