直接跳到内容

导航概览

介绍

导航模块负责统一管理路由注册、页面跳转、参数传递与结果回传。导航能力分为两层:

  • core/navigation:提供导航框架能力,与业务无关
  • foundation/biz_navigation:封装业务路由,提供类型安全的跳转方法

两层导航架构

┌─────────────────────────────────────────────────────────────┐
│                    feature (业务层)                          │
│                    ViewModel / View                         │
├─────────────────────────────────────────────────────────────┤
│              foundation/biz_navigation (业务路由)            │
│         AuthNavigator / DemoNavigator / UserNavigator       │
│         业务参数类型 / 业务结果类型                            │
├─────────────────────────────────────────────────────────────┤
│                core/navigation (导航框架)                    │
│         RouteBuild / RouteGraph / NavigationService         │
│         通用参数类型 / 通用结果类型                            │
└─────────────────────────────────────────────────────────────┘

core/navigation 核心文件

导航框架能力集中在 core/navigation/src/main/ets/ 下:

文件职责
RouteBuild.ets路由构建器,提供注册与获取能力
RouteGraph.ets路由图接口,模块必须实现并注册
NavigationService.ets全局导航服务(跳转、取参、返回)
NavigationParam.ets通用导航参数(如 IdParam)
NavigationResult.ets通用返回结果(如 RefreshResult)

foundation/biz_navigation 业务封装

业务路由封装集中在 foundation/biz_navigation/src/main/ets/ 下:

目录/文件职责
auth/AuthNavigator.ets认证模块导航封装
demo/DemoNavigator.ets示例模块导航封装
demo/DemoParam.ets示例模块参数类型
demo/DemoResult.ets示例模块结果类型
user/UserNavigator.ets用户模块导航封装
BusinessNavigationService.ets业务导航服务封装

使用方式

推荐:使用业务 Navigator

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

// 简单跳转
DemoNavigator.toNetworkDemo();

// 带参跳转
DemoNavigator.toNavigationWithArgs(1, "商品名称");

// 获取返回结果
const result = await DemoNavigator.toNavigationResult();

直接使用 NavigationService

ts
import { navigateTo, navigateToForResult } from "@foundation/biz-navigation";

// 简单跳转
navigateTo("demo/network-demo");

// 带参跳转
navigateTo("demo/navigation-with-args", { goodsId: 1 });

// 获取返回结果
const result = await navigateToForResult<DemoResult>("demo/navigation-result");

官方文档

小结

导航的关键点:

  1. 页面入口:用 *Nav 收敛,提供 @Builder 入口
  2. 路由注册:模块实现 RouteGraph 并在入口统一注册
  3. 跳转调用:优先使用 foundation/biz_navigation 的 Navigator,保证类型安全

后续章节会按路由配置、导航流程、登录拦截与结果回传逐一展开。