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

SusRouter — документация

Package: com.sharq-it.sus.router
Version: 1.0.16

SUS UI router — аналог Vue Router: навигация, экраны, модалки, KeepAlive, переходы

Оглавление

#ДокументСодержимое
1Обзор пакетаНазначение, скоуп, экосистема, версионирование
2API SusRouterCore: Register, Push, Replace, Back, Forward, именованные/вложенные, redirect, alias, query, lazy
3SusScreen — жизненный циклБазовый класс, хуки (BeforeEnter/Entered/BeforeLeave/Left/BeforeRouteUpdate), интеграция с SusComponent
4SusRouteView + KeepAliveВизуальный контейнер, смена экранов, KeepAlive LRU-кэш, вложенные маршруты
5Модальные диалогиБазовый класс SusRouterModal, SusModalService: стек модалок, DismissOnClickOutside
6Guard'ы и переходыGuard-пайплайн (beforeEach/CanEnter/CanLeave/BeforeResolve), SusRouteTransition (на коде)
7Запуск примеров7 примеров: BasicRouting, KeepAlive, Guards, Modals, Nested+Named, RouteLink, FullDemo
8Gap 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");

Куда смотреть

Примеры (Samples~/)

Chrome использует обычный Unity UI Toolkit (Button / Label / TextField / Toggle). Для запуска примеров нижестоящий UI-пакет не требуется.

#ПримерВозможности роутера
1BasicRoutingPush, Replace, Back
2KeepAliveKeepAlive = true/false
3GuardsbeforeEach, CanEnter, CanLeave, beforeResolve
4Modals & TransitionsSusRouterModal, Fade/Slide, NavigateWithTransition
5Nested & Namedchildren, PushNamed, :id, ?q=, alias, redirect, lazy
6RouteLinkSusRouteLink, router-link-active
7Full DemoВсё вместе + theming

Связанные документы