【工作笔记0024】Vue 中对 localStorage 使用进行封装

5 篇文章 0 订阅
1 篇文章 0 订阅

将以下代码放入 vue 项目结构中的 utils 文件夹 storage.js 文件中:

export default {
    //根据key获取内容
	get(name) {
		//console.log(window.location);
		var d = localStorage.getItem(name);
		if (!d) {
            //token判断,是否需要登录权限验证
			if (name == 'Token' && this.isNeedToken()) {
				setTimeout(function () {
					window.location.href = '/index?returnurl=' + encodeURIComponent(window.location.href.replace(window.location.origin, ""));
				}, 2000);
			}
			return null;
		}
		var data = JSON.parse(d);
		var now = new Date().getTime();
        //自定义的有效期判断
		if (data.time && data.time < now) {
			this.del(name);
			if (name == 'Token') {
				setTimeout(function () {
					window.location.href = '/index?returnurl=' + encodeURIComponent(window.location.href.replace(window.location.origin, ""));
				}, 2000);
			}
			return null;
		}
		return data.data;
	},
	//带有有效期的
	setWithExpire(name, value, expiredays) {
		if (!expiredays || expiredays <= 0) {
			expiredays = 1;
		}
		var curTime = new Date().getTime();
		var thatTime = new Date(curTime + expiredays * (24 * 60 * 60 * 1000)).getTime();
		localStorage.setItem(name, JSON.stringify({ data: value, time: thatTime }));
	},
	set(name, value) {
		localStorage.setItem(name, JSON.stringify({ data: value }));
	},
	del(name) {
		localStorage.removeItem(name);
	},
    //清空storage所有key
	clear() {
		localStorage.clear();
	},
    //根据路由判断是否需要登录权限
	isNeedToken() {
		var url = window.location.pathname;
		url = url.replace('//', '/');
		url = url.toLowerCase();
		//console.log(url);
		if (url == '/') {
			return false;
		}
		var urlArray = [
			'/register',
			'/login',
			'/index',
			'/foundmima',
			'/aboutUs',
			'/privacyservices',
		];
		for (var i = 0; i < urlArray.length; i++) {
			if (url.indexOf(urlArray[i]) >= 0) {
				return false;
			}
		}
		return true;
	}
} 

用法如下:在需要使用 localStorage  的组件中,先引入 storage.js 文件,然后调用函数即可,示例:

<script>
import storage from "@/utils/storage";

export default {
  data() {
    return {
      userName: storage.get('userName'), //获取 localStorage 中 key 为 userName 的值
    };
  },
  mounted() {
    //常用写法
    storage.set('userName', 'admin');//存入值
    storage.setWithExpire('userName', 'admin', 1);//存入有效期为 1 天的值
    storage.del('userName');//删除值
    storage.clear();//清空所有值,一般用于用户退出登录时
  },
  methods: {

  }
};
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值