从 GenUI v0.1.2 开始,框架引入了路由配置功能。但需要注意的是,GenUI 的路由机制与传统 Web 前端中的“前端路由”是不同的概念。在 GUI 应用中并没有真正的 URL 路由,GenUI 的路由本质上是一种页面切换机制,用于在多个 UI 界面间进行状态管理和导航。
GenUI 的路由机制基于一个专用组件,并通过项目配置文件进行启用。你可以通过在 router.toml 中声明路由结构,并在 gen_ui.toml 中启用配置,再通过 route! 宏将其引入具体页面。
示例详见:
router.toml你可以通过 router.toml 定义一个完整的路由配置,包括路由模式、默认激活页面、是否启用 Tabbar、页面路径等:
gen_ui.toml 中启用路由配置在需要使用路由的 .gen 文件中,使用 route! 宏引入已声明的路由组件:
如果使用了 route! 宏,则该 .gen 文件不能包含其他元素,必须仅用于路由承载。
你可以像使用普通组件一样,将路由组件嵌入到其他页面中:
如果希望以路由组件作为应用根组件,请在 root.gen 文件中使用 route! 宏。
此时
router.toml中的name必须设置为"UiRoot",以保证编译器识别为主入口。
你可以通过 c_ref! 宏获取路由实例,并调用其提供的方法:
对于子组件,GenUI 提供了便捷的宏 nav_to! 和 nav_back! 用于处理跳转:
| Key | 类型 | 描述 | 
|---|---|---|
name | String | 路由组件名称 | 
id | String | 路由组件唯一标识 | 
mode | NavMode | 路由模式,支持 History(历史栈)与 Switch(切换模式) | 
active | Option<String> | 默认激活的页面 ID | 
tabbar | Option<TabbarBuilder> | Tabbar 配置项(可选) | 
bar_pages | Vec<(String, Page)> | 主要页面配置,支持组件指定 | 
nav_pages | HashMap<String, Page> | 次要页面配置,不显示在 Tabbar 中 | 
TabbarItem.icon | Option<LiveDependency> | 图标资源路径 | 
TabbarItem.text | Option<String> | Tabbar 显示文本 |