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项目利用axios请求接口下载excel
Nov 17 Vue.js
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
vue el-upload上传文件的示例代码
Dec 21 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue里使用create, mounted调用方法
Apr 26 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
如何将数据从文本导入到mysql
2006/10/09 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
JScript的条件编译
2007/05/29 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
Python的类实例属性访问规则探讨
2015/01/30 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
python编写实现抽奖器
2020/09/10 Python
python设置中文界面实例方法
2020/10/27 Python
python多线程和多进程关系详解
2020/12/14 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
2014年两会学习心得体会
2014/03/10 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
会计师事务所实习证明
2014/11/16 职场文书
节水宣传标语口号
2015/12/26 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏