作者:瑶瑶2502863511 | 来源:互联网 | 2023-07-31 14:16
需求“前端缓存”需求背景:解决表单高频率重复填报问题,要求打开页面自动填充上次录入的数据,数据存储期限为一周(7天有效期)。说起缓存首先想到的则是 localstorage、ses
需求“前端缓存”
需求背景:解决表单高频率重复填报问题,要求打开页面自动填充上次录入的数据,数据存储期限为一周(7天有效期)。
说起缓存首先想到的则是 localstorage
、sessionStorage
1. sessionStorage:
也称会话缓存,当用户关闭浏览器窗口后,数据就会被删除;
Vue.ls
一个Vue封装的本地储存的方法。Vue插件,用于从Vue上下文中使用本地Storage,会话Storage和内存Storage,简单易上手,Api说明也是比较全面。
安装
NPM
npm install vue-ls --save
Yarn
yarn add vue-ls
使用
Vue-ls Storage API
import Storage from 'vue-ls';
optiOns= {
namespace: 'vuejs__', // key键前缀
name: 'ls', // 命名Vue变量.[ls]或this.[$ls],
storage: 'local', // 存储名称: session, local, memory
};
Vue.use(Storage, options);
// 或 Vue.use(Storage);
new Vue({
el: '#app',
mounted: function() {
Vue.ls.set('foo', 'boo');
// 设置有效期
Vue.ls.set('foo', 'boo', 60 * 60 * 1000); //有效1小时
Vue.ls.get('foo');
Vue.ls.get('boo', 10); // 如果没有设置boo返回默认值10
let callback = (val, oldVal, uri) => {
console.log('localStorage change', val);
}
Vue.ls.on('foo', callback) //侦查改变foo键并触发回调
Vue.ls.off('foo', callback) //不侦查
Vue.ls.remove('foo'); // 移除
}
});
Global(全局)
Vue.ls
Context(上下文)
this.$ls
API 说明
Vue.ls.get(name, def)
返回storage中 name值。在返回之前,内部解析JSON中的值
- def: 默认null, 如果为设置则返回 name.
Vue.ls.set(name, value, expire)
在storage设置 name的 value.并将 value转化为 JSON
expire: 默认为 null, name有效时间以毫秒为单位
Vue.ls.remove(name)
从 storage中移除 name. 成功移除 true, 否则返回false.
Vue.ls.clear()
清除storage.
Vue.ls.on(name, callback)
持续监听 name在其他标签上的更改,更改时触发 callback, 传递以下参数:
- newValue: 当前storage中 name, 从持久化的JSON中解析
- oldValue: 旧的storage中 name, 从持久化的JSON中解析
- url: 修改来自选项卡的URL
Vue.ls.off(name, callback)
删除以前的侦听器 Vue.ls.on(name, callback)
实操
存储:键值对形式,最后一个参数为有效期
取值:参数为存进去的键
查看:存储的数据可在localstorage中查看
总结
localstorage(本地存储)则以文件的方式存储在本地,永久保存;sessionstorage( 会话存储 ) ,临时保存;Vue.ls是一个Vue封装的本地储存的方法,简单方便易上手。
localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理。