成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
當咱們把咱們想緩存的東西,存在localStorage、sessionStorage中,在開發過程中,確實有利于咱們的開發,咱們想看的時候也是一目了然,點擊Application就可以看到。

前言

大家好,我是林三心,用最通俗的話,講最難的知識點是我的座右銘,基礎是進階的前提是我的初心,今天就給大家嘮一下嗑,講一下,怎么樣使用localStorage、sessionStorage,才能更規范,更高大上,更能讓人眼前一亮。

用處

在平時的開發中,localStorage、sessionStorage的用途是非常的多的,在我們的開發中發揮著非常重要的作用:

1、登錄完成后token的存儲

2、用戶部分信息的存儲,比如昵稱、頭像、簡介

3、一些項目通用參數的存儲,例如某個id、某個參數params

4、項目狀態管理的持久化,例如vuex的持久化、redux的持久化

5、項目整體的切換狀態存儲,例如主題顏色、icon風格、語言標識

6、等等、、、、、、、、、、、、、、、、、、、、、、、、、、

普通使用

那么,相信我們各位平時使用都是這樣的(拿localStorage舉例)

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互相頂替的現象,也就是互相污染現象:

圖片圖片

2、時效性

咱們都知道localStorage、sessionStorage這兩個的生命周期分別是

  • localStorage:除非手動清除,否則一直存在
  • sessionStorage:生命結束于當前標簽頁的關閉或瀏覽器的關閉

其實平時普通的使用時沒什么問題的,但是給某些指定緩存加上特定的時效性,是非常重要的!比如某一天:

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

那這時候,因為需要在前端判斷過期,所以咱們就得給token設置一個時效性,或者是1天,或者是7天

圖片圖片

3、隱秘性

其實這個好理解,你們想想,當咱們把咱們想緩存的東西,存在localStorage、sessionStorage中,在開發過程中,確實有利于咱們的開發,咱們想看的時候也是一目了然,點擊Application就可以看到。

但是,一旦產品上線了,用戶也是可以看到緩存中的東西的,而咱們肯定是會想:有些東西可以讓用戶看到,但是有些東西我不想讓你看到

圖片圖片

或者咱們在做狀態管理持久化時,需要把數據先存在localStorage中,這個時候就很有必要對緩存進行加密了。

解決方案

1、命名規范

我個人的看法是項目名 + 當前環境 + 項目版本 + 緩存key,如果大家有其他規則的,可以評論區告訴林三心,讓林三心學學

圖片圖片

2、expire定時

思路:設置緩存key時,將value包裝成一個對象,對象中有相應的時效時段,當下一次想獲取緩存值時,判斷有無超時,不超時就獲取value,超時就刪除這個緩存

圖片圖片

截屏2021-11-11 下午9.33.00.png

3、crypto加密

加密很簡單,直接使用crypto-js進行對數據的加密,使用這個庫里的encrypt、decrypyt進行加密、解密

圖片圖片

截屏2021-11-11 下午9.43.16.png

實踐

其實實踐的話比較簡單啦,無非就是四步

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

結語

有人可能覺得沒必要,但是嚴格要求自己其實是很有必要的,平時嚴格要求自己,才能做到每到一個公司都能更好的做到向下兼容難度。

責任編輯:武曉燕 來源: 前端之神
相關推薦

2022-10-14 08:45:54

2024-04-22 08:02:34

kafka消息隊列高可用

2024-02-19 00:00:00

Docker輕量級容器

2024-12-04 08:40:19

2022-12-21 08:04:19

socket圖解網絡

2024-11-26 00:45:29

free區域字段

2024-12-11 08:19:34

2023-12-20 08:23:53

NIO組件非阻塞

2024-06-03 14:27:08

ThisAPIThat

2025-01-16 16:41:00

ObjectConditionJDK

2024-10-05 00:00:00

HTTPS性能HTTP/2

2024-04-10 10:15:16

監聽

2022-11-16 08:43:30

Node.js模塊

2024-06-20 08:06:30

2024-07-30 08:22:47

API前端網關

2024-11-08 09:48:38

異步編程I/O密集

2020-10-20 10:14:01

JVM內存模型

2022-11-28 00:04:17

2024-01-15 12:16:37

2024-10-12 08:01:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲在线 | 日本不卡一区 | 精品一二三区在线观看 | 色综合久久天天综合网 | 久久爱黑人激情av摘花 | 欧美影院久久 | 亚洲免费片 | 欧美视频网 | 国产精品欧美一区二区三区不卡 | 四虎最新视频 | 91精品国产欧美一区二区成人 | 一级片视频免费 | 黑人粗黑大躁护士 | 久草免费视 | 91精品国产综合久久久久久 | 久久久人 | 日韩中文一区 | 国产精品三级久久久久久电影 | 精品麻豆剧传媒av国产九九九 | 欧区一欧区二欧区三免费 | 亚洲视频在线一区 | 久久久久国产成人精品亚洲午夜 | 亚洲综合无码一区二区 | 国产成人福利在线观看 | 午夜欧美日韩 | 国产日韩精品一区二区三区 | 欧美一区二区三区精品 | 欧洲精品在线观看 | 亚洲国产精品一区二区三区 | 亚洲一区不卡 | 91在线播 | 亚洲成人日韩 | 亚洲精品二区 | 欧美成人免费电影 | 综合婷婷| 免费一级做a爰片久久毛片潮喷 | av黄色片在线观看 | 草草视频在线播放 | 99爱在线免费观看 | 国产丝袜一区二区三区免费视频 | 懂色av一区二区三区在线播放 |