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 相关文章推荐
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vuex的使用步骤
Jan 06 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
vue自定义右键菜单之全局实现
Apr 09 Vue.js
Vue router配置与使用分析讲解
Dec 24 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函数getenv简介和使用实例
2014/05/12 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
js获取div高度的代码
2008/08/09 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
angular十大常见问题
2017/03/07 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python实现AES加密与解密
2019/03/28 Python
Django保护敏感信息的方法示例
2019/05/09 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Django REST framwork的权限验证实例
2020/04/02 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
实习推荐信格式模板
2015/03/27 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
python基础之文件操作
2021/10/24 Python