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项目中封装echarts的步骤
Dec 25 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
vue中配置scss全局变量的步骤
Dec 28 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
vue-cli4.5.x快速搭建项目
May 30 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
Vue前后端不同端口的实现方法
2018/09/19 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
python 监控logcat关键字功能
2020/09/04 Python
Python 实现一个简单的web服务器
2021/01/03 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
教师自我鉴定范文
2013/11/10 职场文书
建筑公司文秘岗位职责
2013/11/29 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
使用Ajax实现进度条的绘制
2022/04/07 Javascript