大家好,我是林三心,用最通俗的話,講最難的知識點是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心,今天就給大家嘮一下嗑,講一下,怎么樣使用localStorage、sessionStorage,才能更規(guī)范,更高大上,更能讓人眼前一亮。
在平時的開發(fā)中,localStorage、sessionStorage的用途是非常的多的,在我們的開發(fā)中發(fā)揮著非常重要的作用:
1、登錄完成后token的存儲
2、用戶部分信息的存儲,比如昵稱、頭像、簡介
3、一些項目通用參數(shù)的存儲,例如某個id、某個參數(shù)params
4、項目狀態(tài)管理的持久化,例如vuex的持久化、redux的持久化
5、項目整體的切換狀態(tài)存儲,例如主題顏色、icon風(fēng)格、語言標(biāo)識
6、等等、、、、、、、、、、、、、、、、、、、、、、、、、、
那么,相信我們各位平時使用都是這樣的(拿localStorage舉例)
// 當(dāng)我們存基本變量時localStorage.setItem('基本變量', '這是一個基本變量')// 當(dāng)我們?nèi)≈禃rlocalStorage.getItem('基本變量')// 當(dāng)我們刪除時localStorage.removeItem('基本變量')
// 當(dāng)我們存引用變量時localStorage.setItem('引用變量', JSON.stringify(data))// 當(dāng)我們?nèi)≈禃rconst data = JSON.parse(localStorage.getItem('引用變量'))// 當(dāng)我們刪除時localStorage.removeItem('引用變量')
localStorage.clear()
我舉個例子吧比如我現(xiàn)在有兩個項目,它們在同源https://www.sunshine.com下,這兩個項目都需要往localStorage中存儲一個 key 為name的值,那么這就會造成兩個項目的name互相頂替的現(xiàn)象,也就是互相污染現(xiàn)象:
圖片
咱們都知道localStorage、sessionStorage這兩個的生命周期分別是
其實平時普通的使用時沒什么問題的,但是給某些指定緩存加上特定的時效性,是非常重要的!比如某一天:
那這時候,因為需要在前端判斷過期,所以咱們就得給token設(shè)置一個時效性,或者是1天,或者是7天
圖片
其實這個好理解,你們想想,當(dāng)咱們把咱們想緩存的東西,存在localStorage、sessionStorage中,在開發(fā)過程中,確實有利于咱們的開發(fā),咱們想看的時候也是一目了然,點擊Application就可以看到。
但是,一旦產(chǎn)品上線了,用戶也是可以看到緩存中的東西的,而咱們肯定是會想:有些東西可以讓用戶看到,但是有些東西我不想讓你看到
圖片
或者咱們在做狀態(tài)管理持久化時,需要把數(shù)據(jù)先存在localStorage中,這個時候就很有必要對緩存進(jìn)行加密了。
我個人的看法是項目名 + 當(dāng)前環(huán)境 + 項目版本 + 緩存key,如果大家有其他規(guī)則的,可以評論區(qū)告訴林三心,讓林三心學(xué)學(xué)
圖片
思路:設(shè)置緩存key時,將value包裝成一個對象,對象中有相應(yīng)的時效時段,當(dāng)下一次想獲取緩存值時,判斷有無超時,不超時就獲取value,超時就刪除這個緩存
圖片
截屏2021-11-11 下午9.33.00.png
加密很簡單,直接使用crypto-js進(jìn)行對數(shù)據(jù)的加密,使用這個庫里的encrypt、decrypyt進(jìn)行加密、解密
圖片
截屏2021-11-11 下午9.43.16.png
其實實踐的話比較簡單啦,無非就是四步
有人可能覺得沒必要,但是嚴(yán)格要求自己其實是很有必要的,平時嚴(yán)格要求自己,才能做到每到一個公司都能更好的做到向下兼容難度。
本文鏈接:http://www.tebozhan.com/showinfo-26-79452-0.html20k級別前端是怎么使用LocalStorage的,想知道嗎?
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com