跳转到内容

11. 相对 Vue Router 的 API 覆盖

SusRouter 1.0.16 — full API coverage comparison against Vue Router 4.

覆盖率:27 项关键 API 中的 27 项(100%),有一些注意事项 — 见下文。

总体情况

类别状态
导航核心(Push/Replace/Back/Forward/Go、stack、CurrentRoute)✅ 8/8
Guard 管道(BeforeEach、BeforeEnter、BeforeLeave、BeforeResolve、AfterEach、重入保护)✅ 7/7
路由(动态、具名、嵌套、redirect、alias、meta、props、KeepAlive + LRU)✅ 10/10
历史(游标栈、go(n)、forward、back)✅ 4/4
动画(transition、slide、fade — 真实的 UITK transition 属性)✅ 3/3
模态框 + 遮罩(SusModalService)✅ 2/2
辅助工具(带 [UxmlElement]+Text 的 router-link、active-link、带全局 guard 的 beforeRouteUpdate)✅ 5/5
优化(惰性加载、KeepAlive LRU)✅ 2/2

注意事项: 嵌套路由 — 仅支持 URL 层面的嵌套,没有 layout wrapper 或嵌套的 <router-view>。异步 guard — 目前是同步的(TODO)。

阶段 A — 核心导航 ✅

A.1 router.go(n)router.forward()

基于 _historyIndex 的游标历史。Push 会截断前进方向的尾部。CanGoBack / CanGoForward

A.2 beforeRouteUpdate

在同一路由上更新 params,而不重新创建 screen。

SusRouteLink — 通过 router-link-active / router-link-exact-active 类实现声明式导航。IsRouteActive / IsRouteActiveExact

阶段 B — DX 改进 ✅

B.1 具名路由

PushNamed / ReplaceNamed / ResolvePath_namedRoutes 字典。SusRouteConfig.Name

B.2 嵌套路由

SusRouteConfig.Children。路径拼接。SusRouteRecord.Parent。按名称 resolve。

B.3 Redirect 与 alias

SusRouteConfig.Redirect / Alias_aliasMap 用于快速查找。Redirect 在 Navigate 中处理。

阶段 C — 锦上添花 ✅

C.1 beforeResolve

全局 guard。在 BeforeEnter/screen 创建之前调用(NavigateCore 中的第 5.5 步,在 Activator.CreateInstance 之前)。中止时不会留下已创建 screen 的副作用。

C.2 Query 参数

解析 ?key=val&key2=val2SusRoute.QueryDictionary<string, string>ResolveIsRouteActive 会忽略 query。IsRouteActiveExact — 精确匹配。

C.3 惰性加载

SusRouteConfig.LazyFactoryFunc<SusScreen>Register 允许 screenType 为 null。只调用一次。

总结

阶段任务状态
阶段 A — 核心导航3
阶段 B — DX 改进3
阶段 C — 锦上添花3
总计9✅ 100%