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中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
vue使用watch监听属性变化
Apr 30 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中JSON的使用方法
2015/04/30 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
koa源码中promise的解读
2018/11/13 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python虚拟环境完美部署教程
2019/08/06 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
nohup的用法
2014/08/10 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
企业后勤岗位职责
2014/02/28 职场文书
殡葬服务心得体会
2014/09/11 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
大学四年个人总结
2015/03/03 职场文书
单方投资意向书
2015/05/11 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis