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+element-ui添加自定义右键菜单的方法示例
Dec 08 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
vue 动态生成拓扑图的示例
Jan 03 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
原生JS封装vue Tab切换效果
Apr 28 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
javascript的几种写法总结
2016/09/30 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python中的print()输出
2019/04/12 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
日语专业推荐信
2013/11/12 职场文书
土地转让协议书范本
2014/04/15 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python