localStorage功能在开发中的两个简单代码
2018-03-06 16:00
197 查看
localStorage作为存储功能在项目中我使用的次数是很多的。作为一个前端,尽量是让用户少输入,接口少请求,除了一些特定的数据不要存储在本地,其它数据都会放在本地,并加入时效机制。
过年的时候就遇到这种情况,大年三十的时候,大家乐呵乐呵看春晚,而我还在改代码0.0。
以上就是两个简单的方法,当然是有bug的,毕竟是获取浏览器的时间,如果用户改变了机器时间,就失效咯。
若有问题欢迎指出,谢谢~
本地存储、读取数据方法
/** * 本地存储、读取功能 * @param { String } item 本地存储的id * @param { any } data 本地存储的详情 不传视为读取 * @param { Number } time 有效时间,单位s 默认保存3天 259200s * @return { any } 视参数而定 */ const local = (item, data, time) => { // 获取本地保存的有效期 const validity = localStorage.getItem(`${item}-validity`); // 获取localStorage储存的时间 const localTime = new Date(localStorage.getItem(`${item}-time`)); if (data) { // 存储 localStorage.setItem(item, JSON.stringify(data)); // 存储时间 localStorage.setItem(`${item}-time`, new Date()); // 存储有效时间 localStorage.setItem(`${item}-validity`, time || 259200); } else if (new Date() - localTime < validity * 1000) { // 有效期内 return JSON.parse(localStorage.getItem(item)); } // 失效 return null; }; const obj = { name: '叶落尘', address: '成都' } // 存储功能 模拟10s local('obj', obj, 10); // 读取 const timer = setInterval(() => { const localObj = local('obj'); console.log(localObj); if (!localObj) { clearInterval(timer); } }, 1000);
线上运行时清除缓存
有时候会出现上线之后,由于业务变动,或者突发状况,导致本来前后端相约好了的字段发生变化,这时候最快捷、安全、暴力的解决方法就是localStorage.clear()。过年的时候就遇到这种情况,大年三十的时候,大家乐呵乐呵看春晚,而我还在改代码0.0。
/** * 项目清除本地存储 * @param { String } sessionId 项目ID */ const clearLocal = (sessionId) => { // 获取版本号的本地存储的值 const item = localStorage.getItem(sessionId); // 如果本地没有该值,即为全新版本,清除并存储 if (!item) { localStorage.clear(); localStorage.setItem(sessionId, 'success'); } }; // 版本1 clearLocal('v1'); const obj = { name: '叶落尘', address: '成都' } // 使用local()存储 local('obj', obj); console.log(local('obj')); // {name: "叶落尘", address: "成都"} // 若项目改变,版本号变化 clearLocal('v2'); console.log(local('obj')); // null
以上就是两个简单的方法,当然是有bug的,毕竟是获取浏览器的时间,如果用户改变了机器时间,就失效咯。
若有问题欢迎指出,谢谢~
相关文章推荐
- 以简单功能代码示例讲解我的开发经验
- 开发--省级三联动,简单的代码,但是功能不差
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- 安卓简单app开发实践,代码完成后没报错,但功能就是无法使用,学生菜鸟,求指导
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- [置顶] Android开发,java开发程序员常见基础面试题,更换两个变量的值,java逻辑代码
- Android开发--WebView简单录音功能的实现
- JavaScript蒙板(model)功能的简单实现代码
- 微信/易信公共平台开发(一):开发了一个简单易用的PHP类(提供源码),十几行代码搞定一个公众号
- php编写的简单页面跳转功能实现代码
- [转]多操作系统平台协同开发时 GIT 的注意事项: 不同操作系统中的换行符(不要使用git的换行符自动转换功能,并且,尽可能保证代码的换行符都是unix); 避免使用第三方插件(如 EGit );
- W5100 简单UDP 协议的开发与代码分析
- JSP简单添加,查询功能代码
- Android ADT开发环境配置代码自动提示功能
- iOS开发中一些小功能代码(持续更新)
- 20个开发人员非常有用的Java功能代码
- 实战开发:nodejs(express)+mongodb+........简单博客系统代码
- javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题
- (八)简单了解下angularJS框架中NB的双向数据绑定机制,大大减少需要重复的开发代码量