从 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 显示文本 |