文档中心
探索 DWeb 框架的无限可能,构建下一代高性能 Web 应用
存储工具
封装 localStorage 和 sessionStorage,提供自动 JSON 序列化、过期时间等功能。
环境兼容性
所有存储工具函数仅在浏览器环境可用。在服务端环境调用这些函数会抛出异常。
快速开始
Code
import { setStorage, getStorage, removeStorage } from "@dreamer/dweb/utils/storage";
// 存储数据(自动序列化)
setStorage('user', { id: 1, name: 'Alice' });
// 获取数据(自动反序列化)
const user = getStorage('user');
// { id: 1, name: 'Alice' }
// 删除数据
removeStorage('user');基础操作
设置存储
自动将值序列化为 JSON 字符串存储。
Code
import { setStorage, getStorage, removeStorage, clearStorage } from "@dreamer/dweb/utils/storage";
// 存储对象
setStorage('user', { id: 1, name: 'Alice' });
// 存储数组
setStorage('items', [1, 2, 3]);
// 存储到 sessionStorage
setStorage('token', 'abc123', 'sessionStorage');
// 获取数据
const user = getStorage<User>('user');
// { id: 1, name: 'Alice' }
const token = getStorage('token', 'sessionStorage');
// 删除指定键
removeStorage('user');
removeStorage('token', 'sessionStorage');
// 清空所有存储
clearStorage(); // 清空 localStorage
clearStorage('sessionStorage'); // 清空 sessionStorage带过期时间的存储
设置带过期时间的存储
存储的值会在指定时间后自动过期。
Code
import { setStorageWithExpiry, getStorageWithExpiry } from "@dreamer/dweb/utils/storage";
// 存储 token,1 小时后过期
setStorageWithExpiry('token', 'abc123', 3600);
// 存储临时数据,5 分钟后过期
setStorageWithExpiry('temp', { data: 'xxx' }, 300);
// 获取带过期时间的存储
const token = getStorageWithExpiry('token');
if (!token) {
// token 不存在或已过期,需要重新获取
}存储管理
Code
import { hasStorage, getStorageKeys, getStorageSize, getTotalStorageSize } from "@dreamer/dweb/utils/storage";
// 检查存储是否存在
if (hasStorage('user')) {
const user = getStorage('user');
}
// 获取所有存储键
const keys = getStorageKeys();
// ['user', 'token', 'settings']
// 获取指定键的存储大小
const size = getStorageSize('user');
console.log(`用户数据占用 ${size} 字节`);
// 获取所有存储的总大小
const totalSize = getTotalStorageSize();
console.log(`localStorage 总占用 ${totalSize} 字节`);完整示例
Code
import {
setStorage,
getStorage,
setStorageWithExpiry,
getStorageWithExpiry,
hasStorage,
} from "@dreamer/dweb/utils/storage";
// 存储用户信息
setStorage('user', {
id: 1,
name: 'Alice',
email: '[email protected]',
});
// 存储带过期时间的 token
setStorageWithExpiry('token', 'abc123', 3600); // 1小时后过期
// 检查并获取数据
if (hasStorage('user')) {
const user = getStorage('user');
console.log(user);
}
// 获取 token(自动检查过期)
const token = getStorageWithExpiry('token');
if (token) {
// 使用 token
} else {
// token 已过期,重新获取
}API 参考
Code
// 基础操作
- setStorage(key, value, type?) - 设置存储
- getStorage<T>(key, type?) - 获取存储
- removeStorage(key, type?) - 删除存储
- clearStorage(type?) - 清空所有存储
- hasStorage(key, type?) - 检查存储是否存在
- getStorageKeys(type?) - 获取所有存储键
// 带过期时间的存储
- setStorageWithExpiry(key, value, ttl, type?) - 设置带过期时间的存储
- getStorageWithExpiry<T>(key, type?) - 获取带过期时间的存储
// 存储大小
- getStorageSize(key, type?) - 获取指定键的存储大小(字节)
- getTotalStorageSize(type?) - 获取所有存储的总大小(字节)
// 类型
- StorageType - 存储类型('localStorage' | 'sessionStorage')