Vue操作Storage本地化存储


Posted in Vue.js onApril 29, 2022

Storage本地化存储

存储优点:

  • 空间更大:cookie为4kb,storage为5mb
  • 节省网络流量:不会发送数据到服务器,直接存储在本地
  • 快速显示:存储在本地的数据+浏览器本地的缓存,比从服务器获取数据快得多

localStorage

  • 会永久存储会话数据,除非手动删除或者removeItem
  • 在所有的同源的窗口中存储的数据是共享的
  • 只能存储字符串类型的数据,复杂的对象数据必须借助JSON的stringfy和parse处理

sessionStorage

  • 在一个会话期内,存储会话数据,当关闭当前的会话页面(浏览器页面)时,数据就删除了
  • 存储的数据各会话窗口无法共享
  • 只能存储字符串类型的数据,复杂的对象数据必须借助JSON的stringfy和parse处理 

Strorage本地存储实例

在model文件夹下面新建一个storage.js

const storage = {
  set(key,value){
    sessionStorage.setItem(key,JSON.stringify(value));
  },
  get(key){
    return JSON.parse(sessionStorage.getItem(key));
  },
  getForIndex(index){
    return sessionStorage.key(index)
  },
  getKeys(){
    let items = this.getAll();
    let keys = [];
    for(let index = 0;index<items.length;index++){
      keys.push(items[index].key);
    }
  },
  getLength(){
    return sessionStorage.length;
  },
  getSupport(){
    return (typeof (Storage) !== "undefined")?true:false;
  },
  remove(key){
    sessionStorage.removeItem(key);
  },
  removeAll(){
    sessionStorage.clear();
  },
  getAll(){
    let len = sessionStorage.length;
    let arr = [];
    for(let i=0;i<len.length;i++){
      const getKey =  sessionStorage.key(i);
      const getVal = sessionStorage.getItem(getKey);
      arr[i] = {
        "key":getKey,
        "val":getVal,
      }
    }
    return arr;
  },
};
 
export default storage;

创建store

import Vue from "vue";
import Vuex from "vuex";
import storage from "@/model/storage";
 
Vue.use(Vuex);
 
const store = new Vuex.Store({
  state: {
    //  存储token
    token: '',
    userName: '',
    roleId:'',
    staticRoute:[]//这个是本地路由
  },
 
  actions: {
    setuserInfoFun(context, name){
      context.commit('setuserInfo', name);
    },
    set_tokenFun(context, token){
      context.commit('set_token', token)
    },
    del_tokenFun(context){
      context.commit('del_token')
    },
    set_roleIdFun(context,id){
      context.commit('set_roleId',id)
    },
    set_routerFun(context,route){
      context.commit('set_router',route)
    }
  },
 
//  计算属性
  mutations: {
    //  修改token,并将token存入localStorage
    set_token(state, token){
      state.token = token;
      storage.set('token', token);
    },
    del_token(state){
      state.token = "";
      storage.remove('token');
    },
    setuserInfo(state, userName){
      state.userName = userName;
    },
    set_roleId(state,id){
      state.roleId = id;
    },
    set_router(state,router){
      state.staticRoute = router;
      storage.set('route', router);
    }
  }
});
 
export default store;

Tags in this post...

Vue.js 相关文章推荐
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
vue.js Router中嵌套路由的实用示例
Jun 27 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 #Vue.js
详解Vue3使用axios的配置教程
Apr 29 #Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 #Vue.js
vue里使用create, mounted调用方法
vue elementUI批量上传文件
Apr 26 #Vue.js
vue.js 使用原生js实现轮播图
Apr 26 #Vue.js
如何vue使用el-table遍历循环表头和表体数据
You might like
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
python字典基本操作实例分析
2015/07/11 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Python FFT合成波形的实例
2019/12/04 Python
哪些是python中web开发框架
2020/06/17 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
Python之字典添加元素的几种方法
2020/09/30 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
新员工入职感言
2014/02/01 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
销售顾问岗位职责
2014/02/25 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
小学数学教师研修日志
2015/11/13 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle