网站做链接代码,手机模板网站模板下载网站有哪些内容,怎么在网站添加paypal,怎样制作自己的网站下图来源于cookie、localStorage 和 sessionStorage的区别及应用实例 既然localstorage无有效期#xff0c;关闭浏览器还存在#xff0c;那么用来存储用户的身份信息并不是太合适#xff0c;先看一下B站中localstorage都存在了啥#xff0c;原来把我搜索的记录都存在了下来…下图来源于cookie、localStorage 和 sessionStorage的区别及应用实例 既然localstorage无有效期关闭浏览器还存在那么用来存储用户的身份信息并不是太合适先看一下B站中localstorage都存在了啥原来把我搜索的记录都存在了下来。 因此用户登录之后的token信息我还是存在cookie中虽然后台还是会为token设置超时时间。 之前参考了一个网站将菜单和权限存储在localstorage中除非他很少变动。 多租户模式下一个人可以拥有多个账套打开不同页签操作不同账套的数据从上图看应该存储在sessionStorage例如 当前账套ID是16 看看http请求参数与sessionStorage中存储的账套ID一致。 接着看另外一个账套 另外一个账套请求参数如下与账套信息是匹配的 因此知道了SaaS之类平台租户信息应该存储在sessionStorage中这样可以让用户操作不同账套数据还不会错乱。 接下来再看状态管理pinia,状态数据是存储在内存中当你在页面使用鼠标邮件刷新这个数据就会消失。 赋值是下面的方式这种方式在页面刷新的时候就会丢失。 pinia有持久化解决方案Pinia学习-存储数据、修改数据以及持久化实现不过写一个通用的存储模板后不一定非得要这样一个组件因为既然选择有一定周期的存储一定是因为业务既然业务存在那么应该掌握好数据的生存周期所以我的经验告诉我我应该自行设置。 接下来附带了统一数据存取风格的代码
/* localStorage */
tool.local {set(key, data, datetime 0) {//加密if(sysConfig.LS_ENCRYPTION AES){data tool.crypto.AES.encrypt(JSON.stringify(data), sysConfig.LS_ENCRYPTION_key)}let cacheValue {content: data,datetime: parseInt(datetime) 0 ? 0 : new Date().getTime() parseInt(datetime) * 1000}return localStorage.setItem(key, JSON.stringify(cacheValue))},get(key) {try {const value JSON.parse(localStorage.getItem(key))if (value) {let nowTime new Date().getTime()if (nowTime value.datetime value.datetime ! 0) {localStorage.removeItem(key)return null;}//解密if(sysConfig.LS_ENCRYPTION AES){value.content JSON.parse(tool.crypto.AES.decrypt(value.content, sysConfig.LS_ENCRYPTION_key))}return value.content}return null} catch (err) {return null}},remove(key) {return localStorage.removeItem(key)},clear() {return localStorage.clear()}
}/*sessionStorage*/
tool.session {set(table, settings) {var _set JSON.stringify(settings)return sessionStorage.setItem(table, _set);},get(table) {var data sessionStorage.getItem(table);try {data JSON.parse(data)} catch (err) {return null}return data;},remove(table) {return sessionStorage.removeItem(table);},clear() {return sessionStorage.clear();}
}/*cookie*/
tool.cookie {set(name, value, config{}) {var cfg {expires: null,path: null,domain: null,secure: false,httpOnly: false,...config}var cookieStr ${name}${escape(value)}if(cfg.expires){var exp new Date()exp.setTime(exp.getTime() parseInt(cfg.expires) * 1000)cookieStr ;expires${exp.toGMTString()}}if(cfg.path){cookieStr ;path${cfg.path}}if(cfg.domain){cookieStr ;domain${cfg.domain}}document.cookie cookieStr},get(name){var arr document.cookie.match(new RegExp((^| )name([^;]*)(;|$)))if(arr ! null){return unescape(arr[2])}else{return null}},remove(name){var exp new Date()exp.setTime(exp.getTime() - 1)document.cookie ${name};expires${exp.toGMTString()}}
}