当前位置:首页 > 科技  > 软件

20k级别前端是怎么使用LocalStorage的,想知道吗?

来源: 责编: 时间:2024-03-26 17:40:54 274观看
导读前言大家好,我是林三心,用最通俗的话,讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心,今天就给大家唠一下嗑,讲一下,怎么样使用localStorage、sessionStorage,才能更规范,更高大上,更能让人眼前一亮。用处在平时的开发

前言

大家好,我是林三心,用最通俗的话,讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心,今天就给大家唠一下嗑,讲一下,怎么样使用localStorage、sessionStorage,才能更规范,更高大上,更能让人眼前一亮。QKC28资讯网——每日最新资讯28at.com

用处

在平时的开发中,localStorage、sessionStorage的用途是非常的多的,在我们的开发中发挥着非常重要的作用:QKC28资讯网——每日最新资讯28at.com

1、登录完成后token的存储QKC28资讯网——每日最新资讯28at.com

2、用户部分信息的存储,比如昵称、头像、简介QKC28资讯网——每日最新资讯28at.com

3、一些项目通用参数的存储,例如某个id、某个参数paramsQKC28资讯网——每日最新资讯28at.com

4、项目状态管理的持久化,例如vuex的持久化、redux的持久化QKC28资讯网——每日最新资讯28at.com

5、项目整体的切换状态存储,例如主题颜色、icon风格、语言标识QKC28资讯网——每日最新资讯28at.com

6、等等、、、、、、、、、、、、、、、、、、、、、、、、、、QKC28资讯网——每日最新资讯28at.com

普通使用

那么,相信我们各位平时使用都是这样的(拿localStorage举例)QKC28资讯网——每日最新资讯28at.com

1、基础变量

// 当我们存基本变量时localStorage.setItem('基本变量', '这是一个基本变量')// 当我们取值时localStorage.getItem('基本变量')// 当我们删除时localStorage.removeItem('基本变量')

2、引用变量

// 当我们存引用变量时localStorage.setItem('引用变量', JSON.stringify(data))// 当我们取值时const data = JSON.parse(localStorage.getItem('引用变量'))// 当我们删除时localStorage.removeItem('引用变量')

3、清空

localStorage.clear()

暴露出什么问题?

1、命名过于简单

  • 比如我们存用户信息会使用user作为 key 来存储
  • 存储主题的时候用theme 作为 key 来存储
  • 存储令牌时使用token作为 key 来存储 其实这是很有问题的,咱们都知道,同源的两个项目,它们的localStorage是互通的。

我举个例子吧比如我现在有两个项目,它们在同源https://www.sunshine.com下,这两个项目都需要往localStorage中存储一个 key 为name的值,那么这就会造成两个项目的name互相顶替的现象,也就是互相污染现象:QKC28资讯网——每日最新资讯28at.com

图片图片QKC28资讯网——每日最新资讯28at.com

2、时效性

咱们都知道localStorage、sessionStorage这两个的生命周期分别是QKC28资讯网——每日最新资讯28at.com

  • localStorage:除非手动清除,否则一直存在
  • sessionStorage:生命结束于当前标签页的关闭或浏览器的关闭

其实平时普通的使用时没什么问题的,但是给某些指定缓存加上特定的时效性,是非常重要的!比如某一天:QKC28资讯网——每日最新资讯28at.com

  • 后端:”兄弟,你一登录我就把token给你“
  • 前端:”好呀,那你应该会顺便判断token过期没吧?“
  • 后端:”不行哦,放在你前端判断过期呗“
  • 前端:”行吧。。。。。“

那这时候,因为需要在前端判断过期,所以咱们就得给token设置一个时效性,或者是1天,或者是7天QKC28资讯网——每日最新资讯28at.com

图片图片QKC28资讯网——每日最新资讯28at.com

3、隐秘性

其实这个好理解,你们想想,当咱们把咱们想缓存的东西,存在localStorage、sessionStorage中,在开发过程中,确实有利于咱们的开发,咱们想看的时候也是一目了然,点击Application就可以看到。QKC28资讯网——每日最新资讯28at.com

但是,一旦产品上线了,用户也是可以看到缓存中的东西的,而咱们肯定是会想:有些东西可以让用户看到,但是有些东西我不想让你看到QKC28资讯网——每日最新资讯28at.com

图片图片QKC28资讯网——每日最新资讯28at.com

或者咱们在做状态管理持久化时,需要把数据先存在localStorage中,这个时候就很有必要对缓存进行加密了。QKC28资讯网——每日最新资讯28at.com

解决方案

1、命名规范

我个人的看法是项目名 + 当前环境 + 项目版本 + 缓存key,如果大家有其他规则的,可以评论区告诉林三心,让林三心学学QKC28资讯网——每日最新资讯28at.com

图片图片QKC28资讯网——每日最新资讯28at.com

2、expire定时

思路:设置缓存key时,将value包装成一个对象,对象中有相应的时效时段,当下一次想获取缓存值时,判断有无超时,不超时就获取value,超时就删除这个缓存QKC28资讯网——每日最新资讯28at.com

图片图片QKC28资讯网——每日最新资讯28at.com

截屏2021-11-11 下午9.33.00.pngQKC28资讯网——每日最新资讯28at.com

3、crypto加密

加密很简单,直接使用crypto-js进行对数据的加密,使用这个库里的encrypt、decrypyt进行加密、解密QKC28资讯网——每日最新资讯28at.com

图片图片QKC28资讯网——每日最新资讯28at.com

截屏2021-11-11 下午9.43.16.pngQKC28资讯网——每日最新资讯28at.com

实践

其实实践的话比较简单啦,无非就是四步QKC28资讯网——每日最新资讯28at.com

  • 与团队商讨一下key的格式
  • 与团队商讨一下expire的长短
  • 与团队商讨一下使用哪个库来对缓存进行加密(个人建议crypto-js)
  • 代码实施(不难,我这里就不写了)

结语

有人可能觉得没必要,但是严格要求自己其实是很有必要的,平时严格要求自己,才能做到每到一个公司都能更好的做到向下兼容难度。QKC28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-79452-0.html20k级别前端是怎么使用LocalStorage的,想知道吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 你还在用Mybatis?试试这款神器,纵享丝滑

下一篇: 比 ElasticSearch 快 1000 倍的日志引擎

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    一、前言和介绍专为家庭请假懒人而生的石头科技在近日又带来了自己的全新旗舰新品,石头智能洗地机A10 Plus。从这个产品名上就不难看出,这次石头推出的并不是常见的扫地机器
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
Top