# vue-ls 浏览器本地存储
# 1. 介绍
封装 localStorage、sessionStorage,提供统一的调用接口,可以设置过期时间。
在 vue2.x 中,作为插件使用,可以通过 Vue.ls
或 this.$ls
访问;
在 vue3.x 中,作为插件使用,只能通过 this.$ls
访问;
也可以单独使用,也就是说可以不在 vue 中使用。
# 2. 使用
# 2.1. 安装
npm i vue-ls
# "vue-ls": "^4.2.0"
# 2.2. API
# 2.2.1. Vue.ls.get(name, def)
Returns value under name
in storage. Internally parses the value from JSON before returning it.
def
: default null, returned if not setname
.
# 2.2.2. Vue.ls.set(name, value, expire)
Persists value
under name
in storage. Internally converts the value
to JSON.
expire
: default null, life time in millisecondsname
# 2.2.3. Vue.ls.remove(name)
Removes name
from storage. Returns true
if the property was successfully deleted, and false
otherwise.
# 2.2.4. Vue.ls.clear()
Clears storage.
# 2.2.5. Vue.ls.on(name, callback)
Listen for changes persisted against name
on other tabs. Triggers callback
when a change occurs, passing the following arguments.
newValue
: the current value forname
in storage, parsed from the persisted JSONoldValue
: the old value forname
in storage, parsed from the persisted JSONurl
: the url for the tab where the modification came from
# 2.2.6. Vue.ls.off(name, callback)
Removes a listener previously attached with Vue.ls.on(name, callback)
.
# 2.3. vue2.x
main.js:
import Vue from 'vue';
import VueLs from 'vue-ls';
import App from './App.vue'
Vue.config.productionTip = false
Vue.use(VueLs, {
// 本地存储条目 key 的前缀
namespace: 'vuejs__',
// 暴露的名称: 通过 Vue.ls 及 this.$ls 访问
name: 'ls',
// 存储方式: session, local, memory
storage: 'local',
});
new Vue({
render: function (h) { return h(App) },
}).$mount('#app')
App.vue:
<template>
<div id="app"></div>
</template>
<script>
import Vue from 'vue';
export default {
mounted() {
// -- set
// vuejs__name: {"value":"zhangsan","expire":null}
Vue.ls.set('name', 'zhangsan');
// expiry 1 hour
// vuejs__token: {"value":"123","expire":1707296103515}
this.$ls.set('token', '123',60 * 60 * 1000);
// -- get
console.log(`this.$ls.get('name')`, this.$ls.get('name'));
// if not set age returned default 18
console.log(`this.$ls.get('age', 18)`, this.$ls.get('age', 18));
// -- on
const callback = (val, oldVal, uri) => {
console.log('localStorage change', val);
}
Vue.ls.on('name', callback) // watch change foo key and triggered callback
// -- off
Vue.ls.off('name', callback) // unwatch
// -- remove
Vue.ls.remove('name');
// -- clear
Vue.ls.clear();
},
}
</script>
# 2.4. vue3.x
main.js:
import { createApp } from 'vue'
import VueLs from 'vue-ls';
import App from './App.vue'
createApp(App)
.use(VueLs, {
// 本地存储条目 key 的前缀
namespace: 'vue3js__',
// 暴露的名称: 通过 Vue.ls 及 this.$ls 访问
name: 'ls',
// 存储方式: session, local, memory
storage: 'local',
})
.mount('#app')
App.vue:
<template>
<div></div>
</template>
<script>
export default {
mounted() {
this.$ls.set('isLogin', true , 60 * 60 * 1000);
console.log('isLogin', this.$ls.get('isLogin'));
}
}
</script>
# 2.5. 单独使用
storage.js:
import VueLs from 'vue-ls';
const { ls } = VueLs.useStorage({
// 本地存储条目 key 的前缀
namespace: 'vue3js__',
// 暴露的名称: 通过 Vue.ls 及 this.$ls 访问
name: 'ls',
// 存储方式: session, local, memory
storage: 'local',
});
export default ls;
main.js:
import storage from './storage';
storage.set('isLogin', true , 60 * 60 * 1000);
console.log('isLogin', storage.get('isLogin'));
# 3. 参考
上一篇: 下一篇:
本章目录