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+iview实现文件上传
Nov 17 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
详解Vue3使用axios的配置教程
Apr 29 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中session变量的销毁
2014/02/27 PHP
PHP处理会话函数大总结
2015/08/05 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
python中的字符串内部换行方法
2018/07/19 Python
Python如何调用JS文件中的函数
2019/08/16 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
请说出以下代码输出什么
2013/08/30 面试题
《诺贝尔》教学反思
2014/02/17 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
群众路线剖析材料
2014/09/30 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书