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仿百度搜索功能
Dec 28 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue实力踩坑之push当前页无效
Apr 10 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中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
Js面试算法详解
2018/04/08 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
python计算auc指标实例
2017/07/13 Python
python实现周期方波信号频谱图
2018/07/21 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
个人整改措施书面材料
2014/10/24 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android