SuperAPI AI 工具集

ziflux-expert

前端与建站

查看项目

更新于 10-16 06:50

技能介绍

用途:ziflux 是 Angular 22+ 库,为 Angular 的 resource() API 增加 SWR(stale-while-revalidate)缓存,零依赖、信号原生。它不做状态管理,Angular signals + resource() 本身就是状态层,ziflux 只填补数据生命周期(fresh → stale → expired)这一空白。API 设计上熟悉 resource() 即可推断 cachedResource()。

主要能力:DataCache 为内存 SWR 缓存,提供 get/set/invalidate/deduplicate/prefetch/wrap/clear/cleanup/inspect 及 version 信号;cachedResource 返回 CachedResourceRef,含 value、status、isLoading、isStale、isInitialLoading、error、hasValue、reload、set、update、destroy;cachedMutation 返回 CachedMutationRef,含 mutate、status、isPending、error、data、reset;另有 anyLoading、provideZiflux、withDevtools 与 <ziflux-devtools /> 组件。

使用方式:在 app.config.ts 调用 provideZiflux(config?, ...features) 设全局默认。DataCache 必须在注入上下文创建,且放在 providedIn: 'root' 服务中。推荐三文件领域模式:feature.api.ts 持有 DataCache 与 HTTP 方法;feature.store.ts 用 cachedResource + cachedMutation 组装;组件只注入 store。缓存键为 string[],经 JSON.stringify 序列化,invalidate 按前缀匹配。配置优先级:构造参数 > 全局配置 > 默认值(staleTime 30s、expireTime 5min)。

适用场景:Angular 22+ 项目中需要缓存、后台刷新、乐观更新、轮询、重试或 SSR TransferState 复用的数据请求。

限制:staleTime 不得大于 expireTime,否则构造抛错;invalidate 只标记 stale 不删除;invalidate([]) 为空操作,需用 clear();value 为只读信号,须用 ref.set()/ref.update();mutate() 不 reject,错误进 error 信号;并发 mutation 按调用顺序 latest-wins;禁止用 Subject/Observable 管理状态。其余细节暂未提供。