文章插图
作者:monkeysoft
转发链接:https://mp.weixin.qq.com/s/74INx6HJ0N8RhF8red4FdQ
前言在前端项目开发中,前端的本地存储是必不可少的,今天小编就前端的本地存储在项目中的使用详细的介绍一下 。前端本地存储主要有:
- cookie
- localStorage
- sessionStorage
- webSQL/indexDB
cookiecookie就是存储在客户端的一小段文本,大小不能超过4kb,在请求接口的时候,cookie会被请求携带着,进而被服务器所读取使用 。打开浏览器控制台,F12>>Application>>Cookies,随便选择一个域,我们可以看到里面有很多cookie,如下所示:
文章插图
主要属性
- Name
cookie的名称
- Value
cookie的值,大小最大4Kb
- Domain
cookie存储的域名
- Path
cookie存储的路径
- Size
cookie的大小
- Expires/Max-Age
这两个属性涉及到 cookie 的存活时间Expires 属性指定一个具体的到期时间,到了这个指定的时间之后,浏览器就不再保留这个 cookie ,它的值是 UTC 格式,可以使用 Date.prototype.toUTCString() 格式进行转换 。
Max-Age 属性制定了从现在开始 cookie 存在的秒数,比如 60 * 60 (即一小时) 。过了这个时间以后,浏览器就不再保留这个 Cookie 。
Max-Age的优先级比Expires高,如果两者都不设置,则这个cookie会在浏览器关闭的时候失效 。
- HttpOnly
如果设置了该属性,意思就是这个cookie不能被JAVAScript取到,也就防止了cookie被脚本读取,然后当发起请求的时候,该cookie才会被带上 。
- Secure
指定浏览器只有在加密协议 HTTPS 下才能发送cookie,不需要设置,当协议是https时,会自动开启 。使用方式
- 设置cookie
/** * 设置cookie * @param {*} key 名称 * @param {*} val 值 * @param {*} time 失效时间 */export const setCookie = (key, val, time) => { var date = new Date(); var expiresDays = time; //将时间转换为cookie设置时间的格式 date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000); document.cookie = key + "=" + val + ";expires=" + date.toDateString();}
- 获取cookie
/** * 获取cookie * @param {*} key 名称 */export const getCookie = (key) => { var getCookie = document.cookie.replace(/[ ]/g, ""); var arrCookie = getCookie.split(";") var tips; for (var i = 0; i < arrCookie.length; i++) { var arr = arrCookie[i].split("="); if (key == arr[0]) { tips = arr[1]; break; } } return tips;}
- 删除cookie
setCookie(key,'',-1)
localStorage/sessionStoragelocalStorage/sessionStorage是在html5中新加入的技术,两者除了数据的时效性不一样之外,其他都一样 。大小一般为5MB,存储的时候,仅仅在客户端存储,不会随着请求的调用而传递到服务器 。localStorage不手动删除则永久有效,sessionStorage仅在当前会话有效下面F12>>Application>>Cookies看一个存储示例:
文章插图
可以看到,其只有两个属性,也就是key(名称)、value(值)
使用方式localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等,为了使用方便,我们对其进行二次封装,示例如下:
推荐阅读
- 一文带你了解不一样的SQL,惊喜多多
- iOS|iOS 16前的最后一个版本!iOS 15.5登场:一文了解详情
- 一文读懂Redis的dict字典数据结构
- 新疆维吾尔自治区|一文带你了解和田玉“前世今生”
- 使用Java带你打造一款简单的外卖系统
- 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库
- HDMI 2.0已淘汰!HDMI 2.1上位:一文看懂新接口优势
- linux内核驱动第1讲:带你编写一个最简单的字符设备驱动
- 索尼|PS5存储扩容需要注意啥?一文读懂
- 福建安溪铁观音,带你深入了解安溪铁观音茶叶