К содержимому

11. Покрытие API относительно Vue Router ​

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

Покрытие: 27 из 27 ключевых API (100%) с оговорками — см. ниже.

Общая картина ​

КатегорияСтатус
Ядро навигации (Push/Replace/Back/Forward/Go, стек, 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 — реальные свойства transition UITK)✅ 3/3
Модалки + затемнение (SusModalService)✅ 2/2
Хелперы (router-link с [UxmlElement]+Text, active-link, beforeRouteUpdate с глобальными guard'ами)✅ 5/5
Оптимизация (lazy loading, KeepAlive LRU)✅ 2/2

Оговорка: вложенные маршруты — только вложенность URL, без layout-обёртки или вложенного <router-view>. Async guard'ы — пока синхронные (TODO).

Фаза A — базовая навигация ✅ ​

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

Курсорная история с _historyIndex. Push обрезает хвост forward. CanGoBack / CanGoForward.

A.2 beforeRouteUpdate ​

Обновление params на том же маршруте без пересоздания экрана.

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/создания экрана (шаг 5.5 в NavigateCore, до Activator.CreateInstance). При отмене нет побочных эффектов от уже созданного экрана.

C.2 Query-параметры ​

Парсинг ?key=val&key2=val2. SusRoute.Query — Dictionary<string, string>. Resolve и IsRouteActive игнорируют query. IsRouteActiveExact — точное совпадение.

C.3 Lazy loading ​

SusRouteConfig.LazyFactory — Func<SusScreen>. Register допускает null screenType. Вызывается один раз.

Итог ​

ФазаЗадачиСтатус
Фаза A — базовая навигация3✅
Фаза B — улучшения DX3✅
Фаза C — приятные дополнения3✅
Итого9✅ 100%