直接跳到内容

业务路由

介绍

业务路由模块(biz_navigation)封装各业务模块的导航器,提供类型安全的跳转方法。它基于 core/navigation 的框架能力,为业务层提供便捷的路由调用。

与 core/navigation 的区别

模块内容示例
core/navigation导航框架能力,与业务无关RouteBuild、RouteGraph、NavigationService
foundation/biz_navigation业务路由封装AuthNavigator、DemoNavigator、业务参数/结果类型

文件位置:foundation/biz_navigation/src/main/ets/demo/DemoNavigator.ets

ts
import { navigateTo, navigateToForResult } from "../BusinessNavigationService";
import { DemoRoutes } from "./DemoRoutes";
import type { DemoResult } from "./DemoResult";

/**
 * @file Demo 模块导航封装
 */
export class DemoNavigator {
  /**
   * 跳转到网络请求示例页
   */
  static toNetworkDemo(): void {
    navigateTo(DemoRoutes.NetworkDemo);
  }

  /**
   * 跳转到带参示例页
   */
  static toNavigationWithArgs(goodsId: number, goodsName: Resource): void {
    navigateTo(DemoRoutes.NavigationWithArgs, { goodsId, goodsName });
  }

  /**
   * 跳转到结果回传示例页
   */
  static toNavigationResult(): Promise<DemoResult | undefined> {
    return navigateToForResult<DemoResult>(DemoRoutes.NavigationResult);
  }
}

参数与结果类型

参数类型

文件位置:foundation/biz_navigation/src/main/ets/user/UserParam.ets

ts
/**
 * 用户地址详情参数
 */
export interface UserAddressDetailParam {
  addressId: string;
}

/**
 * 用户地址列表参数
 */
export interface UserAddressListParam {
  selectMode?: boolean;
}

结果类型

文件位置:foundation/biz_navigation/src/main/ets/demo/DemoResult.ets

ts
/**
 * Demo 结果回传对象
 */
export interface DemoResult {
  title: string;
  description: string;
}

使用示例

在 ViewModel 中使用

ts
import { DemoNavigator } from "@foundation/biz-navigation";

@ObservedV2
export default class MainViewModel extends BaseViewModel {
  /**
   * 跳转到网络示例
   */
  goToNetworkDemo(): void {
    DemoNavigator.toNetworkDemo();
  }

  /**
   * 跳转并获取结果
   */
  async goToResultDemo(): Promise<void> {
    const result = await DemoNavigator.toNavigationResult();
    if (result) {
      console.log(result.title);
    }
  }
}

如何新增业务路由

  1. foundation/biz_navigation/src/main/ets/ 下创建模块目录。
  2. 创建 *Navigator.ets 封装跳转方法。
  3. 如有参数,创建 *Param.ets 定义参数类型。
  4. 如有返回值,创建 *Result.ets 定义结果类型。
  5. Index.ets 中导出。

注意事项

  • 统一用 Navigator 封装跳转,避免业务层直接拼路由名。
  • 所有路由参数与返回结果都用实体类型描述,避免 any
  • Navigator 只做跳转封装,不写业务逻辑。