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
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
详解Vue 的异常处理机制
Nov 30 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
vue+element实现动态加载表单
Dec 13 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 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.MVC的模板标签系统(三)
2006/09/05 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
php广告加载类用法实例
2014/09/23 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
详解Python的Django框架中的模版继承
2015/07/16 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
dpn网络的pytorch实现方式
2020/01/14 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
《木笛》教学反思
2014/03/01 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
初一年级组工作总结
2015/08/12 职场文书