当前位置: 首页 > news >正文

网站设计的重要性百度做网站为什么上阿里云备案

网站设计的重要性,百度做网站为什么上阿里云备案,网站开发线上,个人网站学生作业原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何使用localStorage设置数据的过期时间。 问题描述 localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所…

原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍如何使用localStorage设置数据的过期时间。

问题描述

localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所以在需要存一些带过期时间的数据时,就要手写工具来实现。

思路

存数据时:将value封装到一个对象里,这个对象里额外加一个过期时间。

读数据时:如果当前时间超过了过期时间,则返回null或者空对象;否则返回value。

测试结果

如下几种方案的测试结果都是一样的:

第一次获取时获取到了数据;4秒后数据过期了,再获取时成了null。

方案1:封装为函数

js

/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/
function writeExpire(key, value, expire) {let obj = {time: new Date().getTime(),data: value,expire: expire,};let objStr = JSON.stringify(obj);localStorage.setItem(key, objStr);
}/*** 读出localStorage*/
function readExpire(key) {let value = localStorage.getItem(key);if (!value || value === "null") {return value;}value = JSON.parse(value);if (Date.now() - value.time > value.expire * 1000) {localStorage.removeItem(key);return null;}return value.data;
}

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="LocalStorageUtil.js"></script>
</head>
<body>
<script>writeExpire("key1", "value1", 2)console.log(readExpire("key1"));sleep(4000).then(() => {console.log(readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案2:封装为对象

js

export let localStorageUtil = {/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/writeExpire: function (key, value, expire) {let obj = {time: new Date().getTime(),data: value,expire: expire,};let objStr = JSON.stringify(obj);localStorage.setItem(key, objStr);},/*** 读出localStorage*/readExpire: function (key) {let value = localStorage.getItem(key);if (!value || value === "null") {return value;}value = JSON.parse(value);if (Date.now() - value.time > value.expire * 1000) {localStorage.removeItem(key);return null;}return value.data;}
}// export default localStorageUtil;

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import {localStorageUtil} from "./LocalStorageUtil.js";localStorageUtil.writeExpire("key1", "value1", 2)console.log(localStorageUtil.readExpire("key1"));sleep(4000).then(() => {console.log(localStorageUtil.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案3:ES5扩展localStorage

js

/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/
Storage.prototype.writeExpire = (key, value, expire) => {let obj = {data: value,time: Date.now(),expire: expire};//localStorage 设置的值不能是对象,转为json字符串localStorage.setItem(key, JSON.stringify(obj));
}/*** 读出localStorage*/
Storage.prototype.readExpire = key => {let value = localStorage.getItem(key);if (!value || value === "null") {return null;}val = JSON.parse(value);if (Date.now() - val.time > val.expire * 1000) {localStorage.removeItem(key);return null;}return val.data;
}

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import './LocalStorageUtil.js';localStorage.writeExpire("key1", "value1", 2)console.log(localStorage.readExpire("key1"));sleep(4000).then(() => {console.log(localStorage.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案4:ES6扩展localStorage

js

class LocalStorageUtil {constructor() {this.storage = window.localStorage;}/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/writeExpire(key, value, expire) {let tempObj = {};tempObj.key = key;tempObj.value = value;tempObj.expire = Date.now() + expire * 1000;this.storage[key] = JSON.stringify(tempObj);return tempObj;}/*** 读出localStorage*/readExpire(key) {let value = localStorage.getItem(key);if (!value || value === "null") {return null;}let valueObject = JSON.parse(value);let expire = valueObject["expire"];if (!expire) {return valueObject.value;}if (Date.now() >= expire) {this.remove(key);return null;}return valueObject.value}remove(key) {this.storage.removeItem(key);}
}export default LocalStorageUtil;

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import LocalStorageUtil from "./LocalStorageUtil.js";let localStorageUtil = new LocalStorageUtil();localStorageUtil.writeExpire("key1", "value1", 2)console.log(localStorageUtil.readExpire("key1"));sleep(4000).then(() => {console.log(localStorageUtil.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

http://www.yayakq.cn/news/864619/

相关文章:

  • 做侵权视频网站长泰597人才网最新招聘信息
  • 公司seo是什么级别seo描述是写什么
  • 白云网站制作石家庄
  • wordpress密码进入网站哈尔滨如何免费制作网站
  • 游戏网站建站大学生网站作品
  • 进黑龙江建设网站用哪个浏览器好各种网站的区别
  • 网站的交互设计有什么网站开发社交网络功能的作用
  • 游戏资讯网站怎么做网站系统建设目标范本
  • 歪咪小麻花官方网站怎么做零售wordpress 做手机站
  • 做网站有哪些软件ps网页设计培训班
  • 个人网站建设公wordpress推送百度
  • 查询备案号怎么查询移动端排名优化软件
  • 开天猫旗舰店网站建设电子商务网站建设报告
  • 成都网站快速排名软件国外做蛋糕的网站
  • 河南住房和城乡建设厅网站个人网页内容需要哪些
  • 东莞网站建设部落wordpress rss feed
  • 网站建设费需要列入无形资产吗加工厂网站建设论文
  • 宠物网站设计的代码重庆哪里可以做网站
  • 微网站 价格wordpress文章中写代码
  • 安徽水利建设市场信用信息平台网站阿里巴巴 网站设计
  • 天河岗顶棠下上社网站建设公司合肥建设网站哪个好
  • 济南建网站价格app软件制作网站
  • 廊坊网站建设选择青橙网络做房产网站需要了解什么东西
  • 类似凡科网的网站wordpress 注册 用户名
  • 网站排名不可有利就前怎么注册自己网站吗
  • 百度怎么收录网站装宽带一般多少钱
  • 网站建设公司哪家好智搜宝深圳企业网站建设哪家专业
  • 科技有限公司 网站制作牛商网网站源码
  • 阿里云虚拟主机与网站吗网站建设记录过程
  • 沙坪坝做网站中小企业公共服务平台