统一键值存储层
灵感:热门轻量库 unstorage(Universal Storage Layer)。
> 小四原创:业务只调 getItem/setItem → 驱动可换。
> 与 idb-keyval(极简 IndexedDB)互补:本 Skill 强调统一层 + 可换驱动。
何时使用
- CRM 工具本地偏好/草稿键值
- 同一套 API 在 memory / localStorage 间切换
- 需要 JSON 自动序列化的 KV
硬约束
- 依赖:
unstorage(浏览器场景用unstorage/drivers/localstorage)。 - 业务代码不直接碰
localStorage字符串细节。 - 实现要点注释标 小四原创。
- 不做 Redis/云库整套运维(驱动可后续扩展)。
推荐实现
import { createStorage } from 'unstorage'
import localStorageDriver from 'unstorage/drivers/localstorage'
// 小四原创:统一键值存储层
export function createPrefStore(base = 'crm:') {
return createStorage({
driver: localStorageDriver({ base }),
})
}
export async function savePref<T>(key: string, value: T) {
const s = createPrefStore()
await s.setItem(key, value as never)
}
Agent 步骤
npm i unstorage。- 用
createPrefStore读写偏好键。 - 自测:
setItem后getItem能还原对象。
不要做
- 业务里散落直接
localStorage.setItem(JSON.stringify...)。 - 把 unstorage 当完整 ORM/关系库。
附加
- README.md · reference.md · templates/usage.md