更新记录
0.0.1(2025-10-23) 下载此版本
- init
平台兼容性
uni-app(4.76)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ | √ | √ |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
uni-app x(4.82)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ |
lime-storage 数据持久化插件
一个轻量、跨平台的本地持久化数据持久化插件,基于 Storage 能力实现,支持命名空间隔离、自动过期(TTL)、类型泛型、键值查询、清理等功能。
功能特点
- 命名空间隔离,防止键名冲突
- TTL 自动过期与清理机制
- 类型泛型支持,读写更安全
- 便捷的键集合、尺寸查询与批量清理
- 轻量无侵入,易于在现有项目接入
文档链接
📚 插件详细文档请访问以下站点:
安装方法
- 在 uni-app 插件市场中搜索并导入
lime-storage
- 导入后在页面引入相关方法
- 需要自定义基座才能使用(建议先进行真机测试)
代码演示
基础用法
通过命名空间管理不同模块的数据,并支持 TTL 自动过期:
import { useStorage } from '@/uni_modules/lime-storage'
const storage = useStorage('user') // 命名空间:user
// 设置:token,1 小时过期(3600 秒)
storage.set('token', 'abc123', 3600)
// 获取:使用泛型更安全
const token = storage.get<string>('token')
console.log('token:', token)
// 判断是否存在(且未过期)
console.log('has token:', storage.has('token'))
// 获取所有键(命名空间内)
console.log('keys:', storage.keys())
// 删除某键
storage.delete('token')
// 清空命名空间
storage.clear()
// 当前命名空间项数量
console.log('size:', storage.size)
快速预览
导入插件后,可以直接使用以下标签查看演示效果:
<!-- 代码位于 uni_modules/lime-storage/components/lime-storage/lime-storage.uvue -->
<lime-storage />
插件标签说明
标签名 | 说明 |
---|---|
l-storage |
组件标签 |
lime-storage |
演示标签 |
API 文档
导出成员
useStorage(prefix: string): StorageManager
创建指定命名空间的存储管理器StorageManager
存储管理器类
StorageManager 类
成员 | 类型 | 说明 |
---|---|---|
构造函数 | new StorageManager(namespace: string) |
通过命名空间初始化存储管理器(一般使用 useStorage 创建) |
prefix | string |
命名空间前缀(只读) |
size | number |
当前命名空间下的存储项数量(只读) |
get | <T = any>(key: string) => T \| null |
获取值;若不存在或过期返回 null |
set | <T = any>(key: string, value: T, timeToLive: number = 0) => void |
设置值;timeToLive 为秒,0 表示永不过期 |
delete | (key: string) => void |
删除指定键 |
clear | () => void |
清空当前命名空间所有键 |
keys | () => string[] |
获取所有键名(不包含命名空间前缀) |
has | (key: string) => boolean |
指定键是否存在且未过期 |
说明:
- TTL(timeToLive)单位为秒,内部会转换为毫秒并保存为过期时间戳(ttl 字段)。当当前时间超过 ttl,
get
会自动返回null
并清理缓存。 - 命名空间通过
prefix
隔离不同模块数据,避免键名冲突。 - 对象类型值以 JSON 字符串形式持久化存储。
内部存储结构(类型)
组件内部使用以下结构进行持久化(不需要手动创建):
类型 | 字段 | 说明 |
---|---|---|
LimeStorageItem |
ttl: number |
过期时间戳(毫秒),0 表示永不过期 |
value: any |
存储值(可为任意类型) |
平台说明
- 采用 uni-app 同步存储 API(
getStorageInfoSync
/getStorageSync
/setStorageSync
/removeStorageSync
) - 解析异常将被静默忽略;非法或过期项会在加载或访问时清理
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
支付宝赞助 | 微信赞助 |
---|---|
![]() |
![]() |