# fwrouter
**Repository Path**: FantasyWind/fwrouter
## Basic Information
- **Project Name**: fwrouter
- **Description**: HarmonyOS系统应用开发路由组件。
支持页面路由(单router模式、单Navigation模式、混合模式)和服务路由功能调用。
支持路由自动注册,自动导入。
- **Primary Language**: TypeScript
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 27
- **Forks**: 4
- **Created**: 2024-06-24
- **Last Updated**: 2024-12-24
## Categories & Tags
**Categories**: harmonyos-advanced
**Tags**: HarmonyOS组件, ArkTS, 路由, Router, OpenHarmony组件
## README
# @fw/router
#### 介绍
HarmonyOS系统应用开发路由组件,支持页面路由(单router模式、单Navigation模式、混合模式)和服务路由功能调用。
#### 功能与特性
- 页面路由支持多种模式(router模式,Navigation模式,混合模式);
- router模式支持打开非命名路由页面;
- 支持页面打开(push/replace),参数传递;关闭页面,返回指定页面,获取返回值,跨页面获取返回值;
- 支持服务路由,可使用路由url调用公共方法,达到跨技术栈调用以及代码解耦的目的;
- 支持页面路由/服务路由通过装饰器自动注册;
- 支持动态导入(在打开路由时才import对应har包),支持自定义动态导入逻辑;
- 支持添加拦截器(打开路由,关闭路由,获取返回值);
- Navigation模式下支持自定义Dialog对话框;
#### 版本支持
**目前支持的api版本**:api12
#### 系统router、Navigation和@fw/router功能比较
| 功能 | @ohos.router | Navigation | @fw/router |
|--------------|--------------|------------|--------------------|
| 命名路由 | entry中不支持 | 需要配置路由表 | @Entry+自定义装饰器 |
| 自动注册 | 支持 | 需要配置路由表 | @Entry+Hvigor插件 |
| 页面返回值 | 不支持 | 支持 | 支持 |
| 服务路由 | 不支持 | 不支持 | 支持 |
| 动态导入 | 不支持 | 需要配置路由表 | 支持 |
| TabBar嵌入页面解耦 | 不支持 | 不支持 | 可使用routeName直接获取页面 |
| 拦截器 | 不支持 | 支持 | 支持 |
| 全局自定义Dialog | 不支持 | 支持 | 支持 |
#### 安装
```shell
ohpm install @fw/router
```
#### 使用说明
请查看[功能使用说明](./router/README.md)
**常见问题请参看:**[Q&A](./Q&A.md)
#### 工程结构说明
```
.
├── entry // 演示DEMO主工程
├── entryForOnlyNavigation // 演示纯Navigation项目的工程
├── entryForOnlyRouter // 演示纯router项目的工程
├── libraryHar // 调起功能测试代码模块-har包
├── libraryHarDemo // 实现路由功能的代码模块-har包
├── plugins // 插件代码
└── router // @fw/router框架代码
```
#### @fw/router代码结构
```
.
├── FWNavigation.ets // 封装系统Navigation,给router页面附加Navigation页面管理能力
├── RouterDefine.ts // router组件类型定义
├── RouterInterceptorManager.ets // 路由组件拦截器管理类
├── RouterManager.ets // 路由组件管理类,解耦方法调用三种路由管理类和拦截器
├── RouterManagerForNavigation.ets // 对接Navigation能力的路由组件管理类
├── RouterManagerForService.ts // 对接服务能力的路由组件管理类
└── RouterManagerForSystemRouter.ts // 对接系统router能力的路由组件管理类
```
#### 沟通交流
wx群交流
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request