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 组件注册
Nov 20 Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue选项卡切换的实现案例
Apr 11 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 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中autoload的用法总结
2013/11/08 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
初识ThinkPHP控制器
2016/04/07 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
django列表筛选功能的实现代码
2020/03/27 Python
python中常见错误及解决方法
2020/06/21 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
给女儿的表扬信
2014/01/18 职场文书
毕业生求职信
2014/06/10 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
门店店长岗位职责
2015/04/14 职场文书
承诺书模板大全
2015/05/04 职场文书
你真的会用Mysql的explain吗
2022/03/31 MySQL
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技
Vue深入理解插槽slot的使用
2022/08/05 Vue.js