类型参考

简介

本页面提供 @esmx/router@esmx/router-vue 导出的所有类型的完整列表。

核心枚举

RouterMode

enum RouterMode {
    history = 'history',
    memory = 'memory'
}

路由器运行模式:

  • history:使用浏览器 History API
  • memory:使用内存历史栈

RouteType

enum RouteType {
    push = 'push',
    replace = 'replace',
    restartApp = 'restartApp',
    go = 'go',
    forward = 'forward',
    back = 'back',
    unknown = 'unknown',
    pushWindow = 'pushWindow',
    replaceWindow = 'replaceWindow',
    pushLayer = 'pushLayer'
}

触发路由创建的导航类型。详情请参阅 Route

基础数据类型

RouteMeta

type RouteMeta = Record<string | symbol, unknown>;

自定义路由元数据类型。用于向路由配置附加任意数据,可通过 route.meta 访问。

const routes = [
    {
        path: '/admin',
        meta: {
            requiresAuth: true,
            title: '管理面板',
            [Symbol('internal')]: 'data'
        }
    }
];

RouteState

type RouteState = Record<string, unknown>;

路由状态类型。用于在浏览器历史状态中持久化自定义数据。

router.push({
    path: '/page',
    state: { scrollY: 100, formData: { name: 'John' } }
});

RouteHandleResult

type RouteHandleResult = unknown | null | void;

路由处理钩子的返回类型。结果可通过 route.handleResult 访问。

RouteMatchType

type RouteMatchType = 'route' | 'exact' | 'include';

路由匹配策略:

  • 'route':路由级匹配 — 比较路由配置是否相同
  • 'exact':精确匹配 — 比较路径是否完全相同
  • 'include':包含匹配 — 检查当前路径是否包含目标路径

Awaitable

type Awaitable<T> = T | Promise<T>;

工具类型,表示可以是同步值或 Promise 的值。

路由位置类型

RouteLocation

interface RouteLocation {
    path?: string;
    url?: string | URL;
    params?: Record<string, string>;
    query?: Record<string, string | undefined>;
    queryArray?: Record<string, string[] | undefined>;
    hash?: string;
    state?: RouteState;
    keepScrollPosition?: boolean;
    statusCode?: number | null;
    layer?: RouteLayerOptions | null;
    confirm?: RouteConfirmHook | null;
}

用于导航的路由位置对象。详情请参阅 Route

RouteLocationInput

type RouteLocationInput = RouteLocation | string;

导航方法的输入类型。可以是字符串路径或 RouteLocation 对象。

路由配置类型

RouteConfig

interface RouteConfig {
    path: string;
    component?: unknown;
    children?: RouteConfig[];
    redirect?: RouteLocationInput | RouteConfirmHook;
    meta?: RouteMeta;
    app?: string | RouterMicroAppCallback;
    asyncComponent?: () => Promise<unknown>;
    beforeEnter?: RouteConfirmHook;
    beforeUpdate?: RouteConfirmHook;
    beforeLeave?: RouteConfirmHook;
    requireIndex?: boolean;
    layer?: boolean;
    override?: RouteConfirmHook;
}

路由配置接口。详情请参阅路由配置

RouteParsedConfig

interface RouteParsedConfig extends RouteConfig {
    requireIndex: boolean;
    compilePath: string;
    children: RouteParsedConfig[];
    match: MatchFunction;
    compile: (params?: Record<string, string>) => string;
}

内部解析的路由配置,包含编译后的匹配和编译函数。

RouteMatchResult

interface RouteMatchResult {
    readonly matches: readonly RouteParsedConfig[];
    readonly params: Record<string, string | string[]>;
}

路由匹配操作的结果。

RouteMatcher

type RouteMatcher = (
    to: URL,
    base: URL,
    cb?: (item: RouteParsedConfig) => boolean
) => RouteMatchResult;

路由匹配函数类型。

钩子类型

RouteConfirmHook

type RouteConfirmHook = (
    to: Route,
    from: Route | null,
    router: Router
) => Awaitable<RouteConfirmHookResult>;

确认守卫,可以批准、取消或重定向导航。

RouteConfirmHookResult

type RouteConfirmHookResult =
    | void
    | false
    | RouteLocationInput
    | RouteHandleHook;

确认钩子的返回类型。

RouteNotifyHook

type RouteNotifyHook = (
    to: Route,
    from: Route | null,
    router: Router
) => void;

导航完成后调用的通知钩子。

RouteVerifyHook

type RouteVerifyHook = (
    to: Route,
    from: Route | null,
    router: Router
) => Awaitable<boolean>;

返回布尔值结果的验证钩子。

RouteHandleHook

type RouteHandleHook = (
    to: Route,
    from: Route | null,
    router: Router
) => Awaitable<RouteHandleResult>;

用于自定义路由处理逻辑的处理钩子。

路由器核心类型

RouterOptions

interface RouterOptions {
    appId?: string;
    context?: Record<string | symbol, unknown>;
    data?: Record<string | symbol, unknown>;
    routes?: RouteConfig[];
    mode?: RouterMode;
    base?: URL;
    req?: IncomingMessage | null;
    res?: ServerResponse | null;
    apps?: RouterMicroApp;
    normalizeURL?: (to: URL, from: URL | null) => URL;
    fallback?: RouteHandleHook;
    nextTick?: () => Awaitable<void>;
    rootStyle?: Partial<CSSStyleDeclaration> | false | null;
    layer?: boolean;
    zIndex?: number;
    handleBackBoundary?: (router: Router) => void;
    handleLayerClose?: (router: Router, data?: any) => void;
}

路由器构造选项。详情请参阅 Router

RouterParsedOptions

interface RouterParsedOptions extends Readonly<Required<RouterOptions>> {
    readonly compiledRoutes: readonly RouteParsedConfig[];
    readonly matcher: RouteMatcher;
}

完全解析的路由器选项,包含编译后的路由和匹配器。

RouterLinkType

type RouterLinkType =
    | 'push'
    | 'replace'
    | 'pushWindow'
    | 'replaceWindow'
    | 'pushLayer';

链接的导航类型。

RouterLinkProps

interface RouterLinkProps {
    to: RouteLocationInput;
    type?: RouterLinkType;
    replace?: boolean;
    exact?: RouteMatchType;
    activeClass?: string;
    event?: string | string[];
    tag?: string;
    layerOptions?: RouteLayerOptions;
    beforeNavigate?: (event: Event, eventName: string) => void;
}

链接配置属性。详情请参阅 RouterLink

RouterLinkAttributes

interface RouterLinkAttributes {
    href: string;
    class: string;
    target?: '_blank';
    rel?: string;
}

为链接元素生成的 HTML 属性。

RouterLinkResolved

interface RouterLinkResolved {
    route: Route;
    type: RouterLinkType;
    isActive: boolean;
    isExactActive: boolean;
    isExternal: boolean;
    tag: string;
    attributes: RouterLinkAttributes;
    navigate: (e: Event) => Promise<void>;
    createEventHandlers: (
        format?: (eventType: string) => string
    ) => Record<string, (e: Event) => Promise<void>>;
}

解析后的链接数据。详情请参阅 RouterLink

层类型

RouteLayerOptions

interface RouteLayerOptions {
    zIndex?: number;
    keepAlive?: 'exact' | 'include' | RouteVerifyHook;
    shouldClose?: RouteVerifyHook;
    autoPush?: boolean;
    push?: boolean;
    routerOptions?: RouterLayerOptions;
}

层创建选项。详情请参阅层路由

RouteLayerResult

type RouteLayerResult =
    | { type: 'close'; route: Route }
    | { type: 'push'; route: Route }
    | { type: 'success'; route: Route; data?: any };

层结果联合类型。详情请参阅层路由

RouterLayerOptions

type RouterLayerOptions = Omit<
    RouterOptions,
    'handleBackBoundary' | 'handleLayerClose' | 'layer'
>;

层创建的路由器选项,排除内部管理的处理字段。

微应用类型

RouterMicroApp

type RouterMicroApp =
    | Record<string, RouterMicroAppCallback | undefined>
    | RouterMicroAppCallback;

微应用配置。可以是命名的应用工厂映射或单个工厂函数。

RouterMicroAppCallback

type RouterMicroAppCallback = (router: Router) => RouterMicroAppOptions;

从路由器创建微应用实例的工厂函数。

RouterMicroAppOptions

interface RouterMicroAppOptions {
    mount: (el: HTMLElement) => void;
    unmount: () => void;
    renderToString?: () => Awaitable<string>;
}

微应用生命周期接口:

  • mount:将应用挂载到 DOM 元素
  • unmount:卸载并清理应用
  • renderToString:可选的 SSR 渲染方法

路由选项

RouteOptions

interface RouteOptions {
    options?: RouterParsedOptions;
    toType?: RouteType;
    toInput?: RouteLocationInput;
    from?: URL | null;
}

Route 类的构造选项(内部使用)。

已弃用类型

以下类型已弃用,将在未来版本中移除:

RouterInstance

/** @deprecated 请直接使用 `Router` */
type RouterInstance = Router;

RouterRawLocation

/** @deprecated 请直接使用 `RouteLocationInput` */
type RouterRawLocation = RouteLocationInput;

RouterLocation

/** @deprecated 请直接使用 `RouteLocation` */
type RouterLocation = RouteLocation;

RouteRecord

/** @deprecated 请直接使用 `Route` */
type RouteRecord = Route;