日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

20k級別前端是怎么使用LocalStorage的,想知道嗎?

來源: 責(zé)編: 時(shí)間:2024-03-26 17:40:54 201觀看
導(dǎo)讀前言大家好,我是林三心,用最通俗的話,講最難的知識點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心,今天就給大家嘮一下嗑,講一下,怎么樣使用localStorage、sessionStorage,才能更規(guī)范,更高大上,更能讓人眼前一亮。用處在平時(shí)的開發(fā)

前言

大家好,我是林三心,用最通俗的話,講最難的知識點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心,今天就給大家嘮一下嗑,講一下,怎么樣使用localStorage、sessionStorage,才能更規(guī)范,更高大上,更能讓人眼前一亮。xgO28資訊網(wǎng)——每日最新資訊28at.com

用處

在平時(shí)的開發(fā)中,localStorage、sessionStorage的用途是非常的多的,在我們的開發(fā)中發(fā)揮著非常重要的作用:xgO28資訊網(wǎng)——每日最新資訊28at.com

1、登錄完成后token的存儲xgO28資訊網(wǎng)——每日最新資訊28at.com

2、用戶部分信息的存儲,比如昵稱、頭像、簡介xgO28資訊網(wǎng)——每日最新資訊28at.com

3、一些項(xiàng)目通用參數(shù)的存儲,例如某個(gè)id、某個(gè)參數(shù)paramsxgO28資訊網(wǎng)——每日最新資訊28at.com

4、項(xiàng)目狀態(tài)管理的持久化,例如vuex的持久化、redux的持久化xgO28資訊網(wǎng)——每日最新資訊28at.com

5、項(xiàng)目整體的切換狀態(tài)存儲,例如主題顏色、icon風(fēng)格、語言標(biāo)識xgO28資訊網(wǎng)——每日最新資訊28at.com

6、等等、、、、、、、、、、、、、、、、、、、、、、、、、、xgO28資訊網(wǎng)——每日最新資訊28at.com

普通使用

那么,相信我們各位平時(shí)使用都是這樣的(拿localStorage舉例)xgO28資訊網(wǎng)——每日最新資訊28at.com

1、基礎(chǔ)變量

// 當(dāng)我們存基本變量時(shí)localStorage.setItem('基本變量', '這是一個(gè)基本變量')// 當(dāng)我們?nèi)≈禃r(shí)localStorage.getItem('基本變量')// 當(dāng)我們刪除時(shí)localStorage.removeItem('基本變量')

2、引用變量

// 當(dāng)我們存引用變量時(shí)localStorage.setItem('引用變量', JSON.stringify(data))// 當(dāng)我們?nèi)≈禃r(shí)const data = JSON.parse(localStorage.getItem('引用變量'))// 當(dāng)我們刪除時(shí)localStorage.removeItem('引用變量')

3、清空

localStorage.clear()

暴露出什么問題?

1、命名過于簡單

  • 比如我們存用戶信息會使用user作為 key 來存儲
  • 存儲主題的時(shí)候用theme 作為 key 來存儲
  • 存儲令牌時(shí)使用token作為 key 來存儲 其實(shí)這是很有問題的,咱們都知道,同源的兩個(gè)項(xiàng)目,它們的localStorage是互通的。

我舉個(gè)例子吧比如我現(xiàn)在有兩個(gè)項(xiàng)目,它們在同源https://www.sunshine.com下,這兩個(gè)項(xiàng)目都需要往localStorage中存儲一個(gè) key 為name的值,那么這就會造成兩個(gè)項(xiàng)目的name互相頂替的現(xiàn)象,也就是互相污染現(xiàn)象:xgO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xgO28資訊網(wǎng)——每日最新資訊28at.com

2、時(shí)效性

咱們都知道localStorage、sessionStorage這兩個(gè)的生命周期分別是xgO28資訊網(wǎng)——每日最新資訊28at.com

  • localStorage:除非手動(dòng)清除,否則一直存在
  • sessionStorage:生命結(jié)束于當(dāng)前標(biāo)簽頁的關(guān)閉或?yàn)g覽器的關(guān)閉

其實(shí)平時(shí)普通的使用時(shí)沒什么問題的,但是給某些指定緩存加上特定的時(shí)效性,是非常重要的!比如某一天:xgO28資訊網(wǎng)——每日最新資訊28at.com

  • 后端:”兄弟,你一登錄我就把token給你“
  • 前端:”好呀,那你應(yīng)該會順便判斷token過期沒吧?“
  • 后端:”不行哦,放在你前端判斷過期唄“
  • 前端:”行吧。。。。。“

那這時(shí)候,因?yàn)樾枰谇岸伺袛噙^期,所以咱們就得給token設(shè)置一個(gè)時(shí)效性,或者是1天,或者是7天xgO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xgO28資訊網(wǎng)——每日最新資訊28at.com

3、隱秘性

其實(shí)這個(gè)好理解,你們想想,當(dāng)咱們把咱們想緩存的東西,存在localStorage、sessionStorage中,在開發(fā)過程中,確實(shí)有利于咱們的開發(fā),咱們想看的時(shí)候也是一目了然,點(diǎn)擊Application就可以看到。xgO28資訊網(wǎng)——每日最新資訊28at.com

但是,一旦產(chǎn)品上線了,用戶也是可以看到緩存中的東西的,而咱們肯定是會想:有些東西可以讓用戶看到,但是有些東西我不想讓你看到xgO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xgO28資訊網(wǎng)——每日最新資訊28at.com

或者咱們在做狀態(tài)管理持久化時(shí),需要把數(shù)據(jù)先存在localStorage中,這個(gè)時(shí)候就很有必要對緩存進(jìn)行加密了。xgO28資訊網(wǎng)——每日最新資訊28at.com

解決方案

1、命名規(guī)范

我個(gè)人的看法是項(xiàng)目名 + 當(dāng)前環(huán)境 + 項(xiàng)目版本 + 緩存key,如果大家有其他規(guī)則的,可以評論區(qū)告訴林三心,讓林三心學(xué)學(xué)xgO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xgO28資訊網(wǎng)——每日最新資訊28at.com

2、expire定時(shí)

思路:設(shè)置緩存key時(shí),將value包裝成一個(gè)對象,對象中有相應(yīng)的時(shí)效時(shí)段,當(dāng)下一次想獲取緩存值時(shí),判斷有無超時(shí),不超時(shí)就獲取value,超時(shí)就刪除這個(gè)緩存xgO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xgO28資訊網(wǎng)——每日最新資訊28at.com

截屏2021-11-11 下午9.33.00.pngxgO28資訊網(wǎng)——每日最新資訊28at.com

3、crypto加密

加密很簡單,直接使用crypto-js進(jìn)行對數(shù)據(jù)的加密,使用這個(gè)庫里的encrypt、decrypyt進(jìn)行加密、解密xgO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xgO28資訊網(wǎng)——每日最新資訊28at.com

截屏2021-11-11 下午9.43.16.pngxgO28資訊網(wǎng)——每日最新資訊28at.com

實(shí)踐

其實(shí)實(shí)踐的話比較簡單啦,無非就是四步xgO28資訊網(wǎng)——每日最新資訊28at.com

  • 與團(tuán)隊(duì)商討一下key的格式
  • 與團(tuán)隊(duì)商討一下expire的長短
  • 與團(tuán)隊(duì)商討一下使用哪個(gè)庫來對緩存進(jìn)行加密(個(gè)人建議crypto-js)
  • 代碼實(shí)施(不難,我這里就不寫了)

結(jié)語

有人可能覺得沒必要,但是嚴(yán)格要求自己其實(shí)是很有必要的,平時(shí)嚴(yán)格要求自己,才能做到每到一個(gè)公司都能更好的做到向下兼容難度。xgO28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79452-0.html20k級別前端是怎么使用LocalStorage的,想知道嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 你還在用Mybatis?試試這款神器,縱享絲滑

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

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 沧源| 怀化市| 时尚| 公安县| 海南省| 巴彦淖尔市| 桂东县| 祁东县| 桦南县| 阳高县| 武胜县| 新安县| 阜新| 祁东县| 南江县| 诸暨市| 易门县| 武强县| 龙里县| 咸宁市| 儋州市| 小金县| 惠东县| 永善县| 桑植县| 西华县| 揭西县| 保靖县| 松阳县| 苏尼特左旗| 开化县| 阜城县| 治多县| 万山特区| 泸溪县| 莎车县| 平塘县| 新宾| 凤台县| 娱乐| 乌拉特中旗|