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实现下载文件流完整前后端代码
Nov 17 Vue.js
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
如何在VUE中使用vue-awesome-swiper
Jan 04 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
Vue SPA 首屏优化方案
Feb 26 Vue.js
vue 实现上传组件
May 31 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
vue实现input输入模糊查询的三种方式
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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python中除法使用的注意事项
2014/08/21 Python
python发送邮件脚本
2018/05/22 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
django的ORM操作 增加和查询
2019/07/26 Python
python构造IP报文实例
2020/05/05 Python
python代码区分大小写吗
2020/06/17 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
总经理岗位职责描述
2014/02/08 职场文书
工程承包协议书
2014/04/22 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
销售开票员岗位职责
2015/04/15 职场文书
撤诉书怎么写
2015/05/19 职场文书
小学思品教学反思
2016/02/20 职场文书
辞职信怎么写?
2019/05/21 职场文书