Skip to content

类型与工具 API

本页整理常用类型、工具方法和存储适配器。类型都可以从 @xsbcme/vue-tab-router 导入。

TabsManagerOptions

createTabsManager(options) 的配置类型。

ts
interface TabsManagerOptions {
  views: TabsManagerViewsOptions;
  storage?: TabsManagerStorageOptions;
  plugins?: TabsManagerPlugin[];
  render?: TabsManagerRenderOptions;
  iframe?: TabsManagerIframeOptions;
  guards?: TabsManagerGuardsOptions;
  detached?: TabsManagerDetachedOptions;
}

主要字段说明见 TabsManager API

TabViewMeta

页面元数据类型。

ts
interface TabViewMeta {
  id?: string | number;
  title?: string;
  icon?: string;
  viewUrl?: string;
  props?: IOpenTabOptions;
  meta?: Record<string, unknown>;
  children?: TabViewMeta[];
}

说明:

  • title / icon 会作为 openTab 默认标题和图标。
  • props 直接复用 IOpenTabOptions
  • children 用于面包屑层级。
  • meta 是业务自定义字段,库不会自动合并到 tab props。

详细用法见 页面模块与元数据

IOpenTabOptions

openTab(viewUrl, options) 的参数类型。

字段说明
_viewNametab 标题。
_viewIcontab 图标。
_viewNoCache是否禁用缓存。
_viewSingle是否单例。
_viewPinned是否置顶。
_viewNoDrag是否禁止拖拽。
_viewOutside是否使用浏览器新窗口打开链接。
_viewOutsidePropswindow.open 参数。

其他字段会进入 tab.viewProps

IUpdateTabOptions

updateTabOptions(options, tabId?) 的参数类型。可更新标题、图标、URL、缓存、单例、置顶、拖拽和业务 props。

ts
await tabsManager.updateTabOptions({
  _viewName: "已保存",
  status: "saved",
});

业务 props 采用浅合并。

CloseTabOptions / CloseTabsOptions

ts
interface CloseTabOptions {
  ignoreNoClose?: boolean;
  skipGuard?: boolean;
}

interface CloseTabsOptions extends CloseTabOptions {
  continueOnRejected?: boolean;
}

用于 closeTab 和批量关闭方法。

TabViewUrl

链接型页面工具命名空间。

ts
import { TabViewUrl } from "@xsbcme/vue-tab-router";

const relativeUrl = TabViewUrl.createRelative("./iframe-test.html");

常见用途:

  • TabViewUrl.createRelative(url):创建相对 iframe 地址。
  • TabViewUrl.isRelative(url):判断是否为相对 iframe 地址。
  • TabViewUrl.isHttp(url):判断是否为 http/https 地址。
  • TabViewUrl.isIframe(url):判断是否为 iframe/link 类型页面。
  • TabViewUrl.resolveIframe(url):解析 iframe 实际加载地址。

StorageAdapter

内置存储适配器,默认使用 sessionStorage

ts
import { StorageAdapter } from "@xsbcme/vue-tab-router";

const adapter = new StorageAdapter(localStorage);

createTabsManager({
  views: { modules },
  storage: {
    adapter,
  },
});

AbstractStorageAdapter

自定义存储适配器需要实现:

ts
class CustomStorageAdapter extends AbstractStorageAdapter {
  get<T = unknown>(key: string, def?: T): T {
    return readValue(key) ?? def;
  }

  set<T = unknown>(key: string, value: T): this {
    writeValue(key, value);
    return this;
  }

  del(key: string): this {
    removeValue(key);
    return this;
  }
}

iframe 类型

IframeMessageEvent

宿主接收 iframe 消息时的上下文。

字段说明
dataiframe 发送的原始数据。
origin消息来源 origin。
source消息来源窗口。
rawEvent原始 MessageEvent
tabiframe 所属 tab 信息。
tabIdiframe 所属 tabId。
reply(data, options?)回复当前 iframe。

IframePostMessageOptions

ts
interface IframePostMessageOptions {
  targetOrigin?: string;
  transfer?: Transferable[];
}

IframeMessageOriginValidator

允许接收 iframe 消息的来源配置。

ts
messageOrigins: ["self", "https://example.com"]

支持:

  • "self":当前页面同源。
  • "*":任意来源,生产环境不建议。
  • 指定 origin 字符串。
  • 自定义校验函数。

菜单与面包屑类型

类型说明
TabMenuItemLike默认可识别的菜单项结构。
UseTabMenuOptionsuseTabMenu 配置。
UseTabMenuReturnuseTabMenu 返回值。
TabBreadcrumbItem面包屑数据项。

插件类型

类型说明
TabsManagerPlugin插件函数或插件对象。
TabsManagerPluginContext插件 setup 上下文。
TabsManagerHookMaphook 参数映射。
TabsManagerHookNamehook 名称联合类型。
TabsManagerHookshook 注册与触发管理器。

详见 插件与 hooks API