vue-app-sdk
Version:
142 lines (141 loc) • 3.44 kB
TypeScript
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;
}