【鸿蒙实战开发】HarmonyOS 中的 Navigation应用导航设计

Navigation应用导航设计

将路由功能抽取成单独的模块并以har包形式存在,命名为RouterModule。RouterModule内部对路由进行管理,对外暴露RouterModule对象供其他模块使用。由于Entry.hap是应用必备的主入口,利用该特性考虑将主入口模块作为其他业务模块的依赖注册中心,在入口模块中使用Navigation组件并依赖其他业务模块。业务模块仅依赖RouterModule,业务模块中的路由统一委托到RouterModule中管理,实现业务模块间的解耦。
在这里插入图片描述

模块之间的依赖关系:
entry依赖:routerHar、hara、harb 也就是全部模块;
hara和harb分别依赖routerHar模块儿就行了
在自己模块的oh-package.json5加入依赖就可以了,entry为例:

entry的oh-package.json5

{
  "name": "entry",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "",
  "dependencies": {
    "@ohos/routerhar": "file:../routerHar",
    "@ohos/hara": "file:../hara",
    "@ohos/harb": "file:../harb"
  }
}

routerHar模块

RouterModule模块
export class RouterModule {
  // 1.定义路由表和路由栈

  // WrappedBuilder支持@Builder描述的组件以参数的形式进行封装存储
  static builderMap: Map<string, WrappedBuilder<[object]>> = new Map<string, WrappedBuilder<[object]>>();
  // 初始化路由栈,需要关联Navigation组件
  // static navPathStack: NavPathStack = new NavPathStack();
  // 建立NavPathStack的路由栈表,key是路由栈名,value是对应的路由栈对象
  static routerMap: Map<string, NavPathStack> = new Map<string, NavPathStack>();

  // 2.增加路由注册和路由获取的方法,业务模块的通过路由注册将需要路由的页面委托给RouterModule管理

  // 注册页面组件到路由表,builderName是路由名字,builder参数是包裹了页面组件的WrappedBuilder对象
  public static registerBuilder(builderName: string, builder: WrappedBuilder<[object]>): void {
    console.log(`oneToMore registerBuilder name ${builderName},szie ${RouterModule.builderMap.size}`)
    RouterModule.builderMap.set(builderName, builder);
    console.log(`oneToMore registerBuilder name, ${builderName},size ${RouterModule.builderMap.size}`)
  }

  // 获取路由表中指定的页面组件  获取注册中的组件
  public static getBuilder(builderName: string): WrappedBuilder<[object]> {
    const builder = RouterModule.builderMap.get(builderName);
    if (!builder) {
      console.log(`oneToMore not found build ${builderName}`)
    }
    console.log(`oneToMore getBuilder.name ${JSON.stringify(builder?.builder.name)}`)
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值