通过PHP自定义函数实现非常简单的权限分配
8个月前 前几天就准备重新设计一下轻博客的权限功能,最初的权限功能已经不能满...
项目中用到的一个localStorage工具,可以用于token存储、数据缓存,支持过期,使用起来简答快捷
JavaScript版
const DEFAULT_EXPIRE = 7200; // 默认存储时间(秒)
const cache = {
/**
* 设置缓存
* @param {string} key 存储的键
* @param {any} value 存储的值
* @param {number} [expire=DEFAULT_EXPIRE] 过期时间(秒),默认 7200s
*/
set: (key, value, expire = DEFAULT_EXPIRE) => {
const expireTimestamp = Date.now() expire * 1000;
const cacheData = { data: value, expireTimestamp };
localStorage.setItem(key, JSON.stringify(cacheData));
},
/**
* 获取缓存
* @param {string} key 存储的键
* @param {any} [defaultValue=null] 如果缓存不存在,返回的默认值
* @returns {any|null} 获取到的数据,或者默认值
*/
get: (key, defaultValue = null) => {
const item = localStorage.getItem(key);
if (!item) return defaultValue;
try {
const cacheData = JSON.parse(item);
if (Date.now() > cacheData.expireTimestamp) {
cache.remove(key); // 过期后删除
return defaultValue;
}
return cacheData.data;
} catch (error) {
console.error("解析缓存数据失败:", error);
cache.remove(key);
return defaultValue;
}
},
/**
* 删除缓存
* @param {string} key 存储的键
*/
remove: (key) => {
localStorage.removeItem(key);
},
/**
* 清空所有缓存
*/
clear: () => {
localStorage.clear();
}
};
export default cache;
typeScript版
const DEFAULT_EXPIRE = 7200; // 默认存储时间(秒)
interface CacheData<T> {
data: T;
expireTimestamp: number;
}
const cache = {
/**
* 设置缓存
* @param key 存储的键
* @param value 存储的值
* @param expire 过期时间(秒),默认 7200s
*/
set: <T>(key: string, value: T, expire: number = DEFAULT_EXPIRE) => {
const expireTimestamp = Date.now() expire * 1000;
const cacheData: CacheData<T> = { data: value, expireTimestamp };
localStorage.setItem(key, JSON.stringify(cacheData));
},
/**
* 获取缓存
* @param key 存储的键
* @param defaultValue 如果缓存不存在,返回的默认值
* @returns T | null
*/
get: <T>(key: string, defaultValue: T | null = null): T | null => {
const item = localStorage.getItem(key);
if (!item) return defaultValue;
try {
const cacheData: CacheData<T> = JSON.parse(item);
if (Date.now() > cacheData.expireTimestamp) {
cache.remove(key); // 过期后删除
return defaultValue;
}
return cacheData.data;
} catch (error) {
console.error("解析缓存数据失败:", error);
cache.remove(key);
return defaultValue;
}
},
/**
* 删除缓存
* @param key 存储的键
*/
remove: (key: string) => {
localStorage.removeItem(key);
},
/**
* 清空所有缓存
*/
clear: () => {
localStorage.clear();
}
};
export default cache;#免责声明#
本文为转载 或 原创内容,未经授权禁止转载、摘编、复制及镜像使用、转载请注明作者、出处及原文链接、违者将依法追究责任。

8个月前 前几天就准备重新设计一下轻博客的权限功能,最初的权限功能已经不能满...

8个月前 > 需求说明 以前还真没有注意这个问题,今天一位朋友测试上一篇文章的...

7个月前 在该项目中添加新的插件可按以下步骤操作: ##### 获取插件文件 准备一个...

2年前以前使用的方法还是太嫩了,最近才发现如果评论存在分页后就会导致评论无...

7个月前 > 首先声明,下面的代码基本都是用AI写作,博主只是辅助提供意见修改。...
7个月前 第一步自行百度搜索fancybox进行下载 **搞忘提示了:要使用fancybox需要引入jQ...