Vanilla Disintegratev1.0.0
ZH
本页内容

后台准备默认关闭。不传 preparation 时,不会创建可见性或 DOM 观察器;只有操作真正需要快照时才捕获。

启用默认策略

const effects = new Disintegrator({ preparation: true });

const unregister = effects.register(document.querySelectorAll('[data-effects]'));

true 使用 visible-idle:元素接近视口且浏览器空闲时才准备。

配置条件

const effects = new Disintegrator({
  preparation: {
    strategy: 'visible-idle',
    rootMargin: '300px 0px',
    concurrency: 1,
    shouldPrepare: (element) => element.matches('[data-effects]'),
    invalidateOnResize: true,
    observeMutations: false,
    cachePixelBudget: 8_000_000,
  },
});
策略行为
immediate有并发容量时立即捕获。
idle等待空闲时段,并使用超时后备。
visible-idle先要求接近视口,再等待空闲。

shouldPrepare(element) 在任务排队前执行,可根据元素类型、界面状态、网络或功能开关决定。

显式控制缓存

await effects.prepare(elements); // 立即捕获
effects.invalidate(elements); // 删除旧快照并重新排队
effects.clearPrepared(); // 清空整个缓存

如果快照缺失、正在生成、已经过期或被淘汰,操作会执行一次最新捕获。

缓存预算

默认 LRU 预算是 800 万物理像素,只限制可重新生成的快照,不限制保留的 DOM 节点。淘汰时会关闭 ImageBitmap 并释放 Canvas/GPU 资源。

invalidateOnResize 默认开启;MutationObserver 默认关闭,因为广泛监听 DOM 可能很昂贵。内容外观改变后应主动调用 invalidate()

在 GitHub 上编辑此页