UNPKG

vue-app-sdk

Version:
142 lines (141 loc) 3.44 kB
import { Awaitable } from '@rhao/types-base'; import { MaybeRefOrGetter } from 'vue'; import { LoadableRoute } from '../../utils'; import { AppSDKInternalInstance, Plugin, PluginID } from '../..'; export interface KeepAliveOptions { /** * 是否自动在路由前进时收集,后退时清理缓存,可用于模拟移动端缓存处理 * @default true */ autoCollectAndClean?: MaybeRefOrGetter<boolean>; /** * 添加路由缓存前执行,返回假值将阻止添加 */ beforeRouteAdd?: (route: LoadableRoute) => Awaitable<void | boolean>; /** * 删除路由缓存前执行,返回假值将阻止删除 */ beforeRouteRemove?: (route: LoadableRoute) => Awaitable<void | boolean>; /** * 缓存保鲜时间,设置大于 `0` 后将开启定时器清理过期缓存 */ staleTime?: number; } /** * KeepAlive Plugin ID */ export declare const KEEP_ALIVE_ID: PluginID<KeepAlive>; /** * 页面缓存管理插件 */ export declare class KeepAlive implements Plugin { /** * 配置项 */ options: KeepAliveOptions; constructor( /** * 配置项 */ options?: KeepAliveOptions); id: PluginID<KeepAlive>; /** * 缓存的组件名称列表 */ private _values; /** * 缓存的组件名称列表 * @readonly */ get values(): string[]; /** * 是否自动模式 */ private _isAuto; /** * 是否自动模式 * @readonly */ get isAuto(): boolean; /** * 缓存保鲜定时器 */ private _staleTimer; /** * 缓存时间记录 */ private _timeRecord; /** * 更新缓存记录时间 */ private _updateTime; /** * 移除缓存时间记录 */ private _removeTime; /** * 启动缓存保鲜定时器 */ startStaleTimer: () => void; /** * 停止缓存保鲜定时器 */ stopStaleTimer: () => void; /** * 清理过期缓存,设置 `options.staleTime > 0` 后有效 */ clearExpired: () => void; /** * 切换自动模式 * @param value 状态值 */ toggleAuto: (value?: boolean) => boolean; /** * 启用自动模式 */ enableAuto: () => boolean; /** * 禁用自动模式 */ disableAuto: () => boolean; /** * 添加路由缓存 * @param name 需要缓存的路由组件名称 */ add(name: string): void; /** * 添加路由缓存 * @param route 需要缓存的路由对象 */ add(route: LoadableRoute): Promise<void>; /** * 移除路由缓存 * @param name 需要移除的路由组件名称 */ remove(name: string): void; /** * 移除路由缓存 * @param route 需要移除的路由对象 */ remove(route: LoadableRoute): Promise<void>; /** * 刷新路由缓存 * @param name 需要刷新的路由组件名称 */ refresh(name: string): void; /** * 刷新路由缓存 * @param route 需要刷新的路由对象 */ refresh(route: LoadableRoute): Promise<void>; /** * 清空缓存列表 */ clear: () => void; /** * 设置缓存的名称列表,会覆盖旧列表 * @param values 缓存名称列表 */ set: (values: string[]) => void; install: (sdk: AppSDKInternalInstance) => () => void; }