SusRouter — документация
Package:
com.sharq-it.sus.router
Version: 1.0.16
SUS UI router — аналог Vue Router: навигация, экраны, модалки, KeepAlive, переходы
Оглавление
| # | Документ | Содержимое |
|---|---|---|
| 1 | Обзор пакета | Назначение, скоуп, экосистема, версионирование |
| 2 | API SusRouter | Core: Register, Push, Replace, Back, Forward, именованные/вложенные, redirect, alias, query, lazy |
| 3 | SusScreen — жизненный цикл | Базовый класс, хуки (BeforeEnter/Entered/BeforeLeave/Left/BeforeRouteUpdate), интеграция с SusComponent |
| 4 | SusRouteView + KeepAlive | Визуальный контейнер, смена экранов, KeepAlive LRU-кэш, вложенные маршруты |
| 5 | Модальные диалоги | Базовый класс SusRouterModal, SusModalService: стек модалок, DismissOnClickOutside |
| 6 | Guard'ы и переходы | Guard-пайплайн (beforeEach/CanEnter/CanLeave/BeforeResolve), SusRouteTransition (на коде) |
| 7 | Запуск примеров | 7 примеров: BasicRouting, KeepAlive, Guards, Modals, Nested+Named, RouteLink, FullDemo |
| 8 | Gap Analysis относительно Vue Router | Фазы A/B/C: что реализовано, что отложено |
| 9 | Глоссарий | Термины: Record, Route, Guard, KeepAlive, Overlay, Props, Query |
| — | 快速入门(中文) | Быстрый старт на китайском (сайт, переведено; копия в пакете: GETTING_STARTED.zh-CN.md в этой папке) |
Быстрый старт
Предпочитайте SusApp + UseRouter:
csharp
using Sharq.Core;
using Sharq.Router;
SusApp.Create(uiDocument)
.UseTheme(SusTheme.Dark)
.UseRouter(new SusRouter(), r =>
{
r.Register("/home", typeof(HomeScreen));
r.Register("/settings", typeof(SettingsScreen),
new SusRouteConfig { KeepAlive = true, Transition = SusRouteTransition.Fade() });
r.BeforeEach((from, to) =>
{
Debug.Log($"[Router] {from.FullPath} → {to.FullPath}");
return true;
});
}, initialPath: "/home")
.Run();Ручное подключение (продвинутый вариант):
csharp
var router = new SusRouter();
var overlayHost = SusBootstrap.GetOrCreateOverlay(root);
router.Init(overlayHost);
router.Register("/home", typeof(HomeScreen));
router.Register("/settings", typeof(SettingsScreen),
new SusRouteConfig { KeepAlive = true, Transition = SusRouteTransition.Fade() });
router.BeforeEach((from, to) =>
{
Debug.Log($"[Router] {from.FullPath} → {to.FullPath}");
return true;
});
router.Mount(root, "/home");Куда смотреть
- Понять архитектуру роутера → 01-overview.md и 02-router-api.md
- Написать экран → 03-susscreen.md
- Разобраться с KeepAlive → 04-routeview.md
- Собрать модалку → 05-modals.md
- Добавить guard'ы/переходы → 06-guards-transitions.md
- Запустить примеры → 10-examples.md
Примеры (Samples~/)
Chrome использует обычный Unity UI Toolkit (Button / Label / TextField / Toggle). Для запуска примеров нижестоящий UI-пакет не требуется.
| # | Пример | Возможности роутера |
|---|---|---|
| 1 | BasicRouting | Push, Replace, Back |
| 2 | KeepAlive | KeepAlive = true/false |
| 3 | Guards | beforeEach, CanEnter, CanLeave, beforeResolve |
| 4 | Modals & Transitions | SusRouterModal, Fade/Slide, NavigateWithTransition |
| 5 | Nested & Named | children, PushNamed, :id, ?q=, alias, redirect, lazy |
| 6 | RouteLink | SusRouteLink, router-link-active |
| 7 | Full Demo | Всё вместе + theming |
Связанные документы
- Руководство sus-core — core (реактивность, OverlayHost, биндинги)