idle-resource-loader
Version:
Lightweight resource preloading SDK that intelligently utilizes browser idle time for optimal performance. Features smart concurrency control, dynamic time slicing, and user experience first design.
69 lines (68 loc) • 1.83 kB
text/typescript
//#region src/types.d.ts
/**
* 资源类型 - 支持字符串路径
*/
type ResourceInput = string;
/**
* 加载策略类型
*/
type LoadStrategy = 'immediate' | 'idle';
/**
* 基础加载配置
*/
interface BaseLoadConfig {
/** 每批处理的资源数量,默认 1。优先保证页面初始化资源的网络带宽 */
batchSize?: number;
/** 超时时间(毫秒),默认 15000 */
timeout?: number;
/** 资源加载失败回调 */
onError?: (url: string, error: Error) => void;
}
/**
* 统一的加载选项接口
*/
/**
* loadResources 函数的选项接口
*/
type LoadResourcesOptions = BaseLoadConfig & {
/** 加载策略,默认 'immediate' */
strategy?: LoadStrategy;
};
/**
* 空闲队列任务接口
*/
//#endregion
//#region src/index.d.ts
/**
* 🚀 统一资源加载函数 - 核心 API
*
* 支持立即加载和空闲加载两种策略的统一接口
*
* @param resources 资源URL字符串或字符串数组
* @param options 加载选项,包含 strategy 字段来选择加载策略
*
* @example
* // 立即加载(默认)
* loadResources(['/assets/image.jpg', '/assets/font.woff'])
*
* // 空闲加载
* loadResources(['/assets/video.mp4'], { strategy: 'idle' })
*
* // 带配置的立即加载
* loadResources(['/assets/image.jpg'], {
* strategy: 'immediate',
* batchSize: 2,
* timeout: 15000,
* onError: (url, error) => console.error('Failed:', url, error)
* })
*
* // 空闲加载配置
* loadResources(['/assets/video.mp4'], {
* strategy: 'idle',
* batchSize: 1,
* onError: (url, error) => console.error('Failed:', url, error)
* })
*/
declare function loadResources(resources: ResourceInput | ResourceInput[], options?: LoadResourcesOptions): void;
//#endregion
export { LoadResourcesOptions, ResourceInput, loadResources };