导航概览
介绍
导航模块负责统一管理路由注册、页面跳转、参数传递与结果回传。导航能力分为两层:
- 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");官方文档
小结
导航的关键点:
- 页面入口:用
*Nav收敛,提供@Builder入口 - 路由注册:模块实现
RouteGraph并在入口统一注册 - 跳转调用:优先使用
foundation/biz_navigation的 Navigator,保证类型安全
后续章节会按路由配置、导航流程、登录拦截与结果回传逐一展开。