跳转到内容

11. 相对 Vue Router 的 API 覆盖 ​

SusRouter 1.0.21 — 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=val2。SusRoute.Query — Dictionary<string, string>。Resolve 和 IsRouteActive 会忽略 query。IsRouteActiveExact — 精确匹配。

C.3 惰性加载 ​

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

总结 ​

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