精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我面試最喜歡問的開放題:如何嚴謹二次封裝 localStorage?

開發(fā) 前端
最近我在面試中,喜歡問一道有關(guān)于 hooks 的開放問題:二次封裝一個 loaclStorage 的 hooks 時,需要考慮哪些問題呢?

在很多公司中,內(nèi)部都會封裝一些適用于公司內(nèi)部業(yè)務的方法庫來提高整個團隊的開發(fā)效率,比如:

  • 防抖節(jié)流
  • 懶加載、虛擬滾動
  • dom增刪改查、移動、拖拽
  • 管理狀態(tài)

而在 Vue3 項目中,這種方法庫表現(xiàn)為:hooks庫,市面上有很多優(yōu)秀的庫,比如:vueuse。

最近我在面試中,喜歡問一道有關(guān)于 hooks 的開放問題:二次封裝一個 loaclStorage 的 hooks 時,需要考慮哪些問題呢?

其實這是一道很簡單的題,只不過想考考面試者在做業(yè)務的時候,會不會考慮更多的邊界情況~接下來說說我對這個問題的小小的理解(可能也不是很全面)。

注意命名,防止污染

比如我現(xiàn)在一個域名下有兩個子項目:

  • A項目
  • B項目

且這兩個項目都需要存儲 userInfo,那要怎么防止這兩組數(shù)據(jù)互相污染呢?所以需要注意命名,在存儲的時候加上對應的項目名前綴,或者其他標識符,保證這組數(shù)據(jù)是唯一的

const PROJECT_NAME = 'test-project'
localStorage.setItem(
  `${PROJECT_NAME}_userInfo`,
  JSON.stringify({ name: 'lsx' })
)

注意版本,迭代防范

請看一個例子,假如我們存儲一段信息,類型是 string

// 存數(shù)據(jù)
const set = () => {
  const info = get()
  if (!info) {
    localStorage.setItem(
      `${PROJECT_NAME}_info`,
      'info_string'
    )
  }
}

// 取數(shù)據(jù)
const get = () => {
  const info = localStorage.getItem(
    `${PROJECT_NAME}_info`
  )
  return info
}

然后項目上線了一段時間,但是這個時候,突然決定要換成 object 類型了,這時候?qū)拇嫒》椒ㄒ沧兞?/p>

// 存數(shù)據(jù)
const set = () => {
  const info = get()
  if (!info) {
    localStorage.setItem(
      `${PROJECT_NAME}_info`,
      JSON.stringify({ name: 'lsx' })
    )
  }
}

// 取數(shù)據(jù)
const get = () => {
  const info = localStorage.getItem(
    `${PROJECT_NAME}_info`
  )
  return JSON.parse(info)
}

但是這樣其實是有隱患的,因為項目已經(jīng)上線了一段時間,有些用戶已經(jīng)存過這個數(shù)據(jù)了,且存的是 string 類型,但是新版本上線之后,取數(shù)據(jù)卻用了 object 的方式去取數(shù)據(jù),這就導致了JSON.parse(字符串)會報錯,影響正常的業(yè)務邏輯~

所以最好是加一個版本號,或者做一下錯誤兼容,這樣就能避免了~

const PROJECT_NAME = 'test-project'
// 每次升級時改變版本號,規(guī)則自己定
const VERSION = 1

// 存數(shù)據(jù)
localStorage.setItem(
  `${PROJECT_NAME}_userInfo_${VERSION}`,
  JSON.stringify({ name: 'lsx' })
)

// 取數(shù)據(jù)
localStorage.getItem(
  `${PROJECT_NAME}_userInfo_${VERSION}`
)

時效性,私密性

時效性,那就是給存進去的數(shù)據(jù)加一個時效,過了某個時間,這個數(shù)據(jù)就時效了,方法就是每次存數(shù)據(jù)進去的時候,加一個時間戳:

// 原來
localStorage.setItem(
  `${PROJECT_NAME}_userInfo`,
  JSON.stringify({ name: 'lsx' })
)

const TIME_OUT = 3 * 60 * 60 * 1000
// 加時間戳
localStorage.setItem(
  `${PROJECT_NAME}_userInfo`,
  JSON.stringify({
    data: { name: 'lsx' },
    // 記錄當前時間
    time: new Date().getTime()
  })
)

// 取數(shù)據(jù)時判斷時間戳
const get = () => {
  let info = localStorage.getItem(
    `${PROJECT_NAME}_userInfo_${VERSION}`
  )
  info = JSON.parse(info)
  const now = new Date().getTime()
  if (now - info.time >= TIME_OUT) {
    localStorage.removeItem(
      `${PROJECT_NAME}_userInfo_${VERSION}`
    )
    return null
  }
  return info
}

有一些數(shù)據(jù)我們不得不存在 localStorage 中,但是又不想被用戶看到,這時候就需要進行加密了(加密規(guī)則自己定):

// 加密函數(shù)
const encrypt = (v) => {}
// 解密函數(shù)
const decrypt = (v) => {}

// 存數(shù)據(jù)
localStorage.setItem(
  `${PROJECT_NAME}_userInfo_${VERSION}`,
  // 加密
  encrypt(JSON.stringify({ name: 'lsx' }))
)

// 取數(shù)據(jù) 解密
decrypt(localStorage.getItem(
  `${PROJECT_NAME}_userInfo_${VERSION}`
))

兼容 SSR

SSR 就是服務端渲染,是在服務端運行代碼,拼接成一個頁面,發(fā)送到瀏覽器去展示出來,所以在服務端是使用不了 localStorage 的,因為不是瀏覽器環(huán)境,所以你像封裝一個比較通用的 localStorage,得兼顧 SSR 的情況:

// 在 SSR 中使用對象替代 localStorage
const SSRStorage = {
  map: {},
  setItem(v) {
    this.map[key] = v
  },
  getItem(key) {
    return this.map[key]
  }
}
let storage = null
// 判斷環(huán)境
if (!window) {
  storage = SSRStorage
} else {
  storage = window.localStorage
}
責任編輯:趙寧寧 來源: 前端之神
相關(guān)推薦

2016-03-02 15:13:54

面試開發(fā)者問題

2022-04-30 18:42:38

Go編程語言

2020-08-06 15:14:07

D語言編程語言

2024-11-05 09:42:59

開發(fā)軟件命令行

2022-01-05 08:56:20

Vue修飾符面試

2024-03-25 11:03:38

Vue修飾符lazy

2012-04-28 09:14:50

編程編程語錄

2021-10-27 14:55:57

Mark TextMarkdown編輯器

2021-01-14 23:14:40

開源Linux生產(chǎn)力應用

2021-11-08 09:18:01

CAS面試場景

2021-12-25 22:31:10

MarkWord面試synchronize

2022-10-17 08:03:47

封裝vue組件

2022-01-03 07:46:36

Linux應用程序操作系統(tǒng)

2021-12-16 18:38:13

面試Synchronize

2021-12-05 21:05:49

前端JSON API

2012-03-30 13:56:17

編程開發(fā)

2021-12-02 18:20:25

算法垃圾回收

2013-10-08 09:34:57

編程漫畫編程漫畫

2014-06-16 13:22:35

點贊
收藏

51CTO技術(shù)棧公眾號

欧美xxxx老人做受| 亚洲欧洲精品一区二区三区 | 最近日本中文字幕| 中文字幕色婷婷在线视频| 国产欧美日韩综合精品一区二区| 国产在线精品成人一区二区三区| 久草网在线观看| 综合干狼人综合首页| 欧美日本乱大交xxxxx| 国产 欧美 日韩 一区| 黑人与亚洲人色ⅹvideos| 美女一区二区三区| 久久久爽爽爽美女图片| 午夜影院黄色片| 伊人www22综合色| 欧美中文字幕一二三区视频| 国产精品视频网站在线观看| www 日韩| 26uuu色噜噜精品一区二区| 国产日产久久高清欧美一区| 影音先锋亚洲天堂| 重囗味另类老妇506070| 亚洲欧美日韩一区在线| 亚洲成人福利视频| 久久免费资源| 色婷婷综合视频在线观看| 成人av在线播放观看| eeuss影院www在线播放| 99精品视频一区二区三区| 成人网址在线观看| 中文字幕在线天堂| 99国产精品99久久久久久粉嫩| 久久精品视频播放| 国产三级在线观看完整版| 欧美自拍一区| 精品国产污污免费网站入口| 亚洲国产午夜精品| 国产精品亚洲d| 色婷婷狠狠综合| 欧美啪啪免费视频| 成年网站在线视频网站| 亚洲色欲色欲www在线观看| 色阁综合av| 黄色在线网站| 久久久亚洲精品一区二区三区| 国产a一区二区| 日韩av免费播放| 久久亚洲欧洲| 日韩美女av在线免费观看| 成人毛片18女人毛片| 亚洲精选国产| 97在线视频精品| 在线观看亚洲欧美| 亚洲一区网站| 奇米4444一区二区三区| 日日摸天天添天天添破| 国产精品日韩精品欧美精品| 8090成年在线看片午夜| 91porny在线| 性一交一乱一区二区洋洋av| 日本高清久久天堂| 国产视频1区2区| 久久综合影音| 国产精品综合网站| 99久久精品国产一区色| 精品一区二区三区免费观看| 91免费看片在线| 精品久久久免费视频| 国产成人精品影院| 国产女主播一区二区| 性xxxx搡xxxxx搡欧美| 久久亚洲私人国产精品va媚药| 欧美激情第六页| 成人在线高清视频| 亚洲欧美怡红院| 国产一级大片免费看| jizz一区二区三区| 色综合色综合色综合色综合色综合| 欧美日韩一区二区在线免费观看 | 欧美精品18| 91精品成人久久| 欧美a视频在线观看| 蜜桃在线一区二区三区| 亚洲在线免费视频| 视频一区 中文字幕| 久久久精品免费免费| 伊人久久av导航| 精精国产xxxx视频在线中文版| 精品福利免费观看| 杨幂毛片午夜性生毛片| 久久国际精品| 日韩黄色在线免费观看| 国产农村妇女精品一区| 国产精品av久久久久久麻豆网| 国产91精品青草社区| 亚洲av人无码激艳猛片服务器| 国产伦精品一区二区三区视频青涩 | 五月天在线免费视频| 97超碰免费在线| 欧美亚洲国产怡红院影院| 手机看片国产精品| 国产精品一区二区三区av麻| 久热精品视频在线观看一区| 圆产精品久久久久久久久久久| 久久精品国产一区二区三区免费看| 国产91aaa| 国产毛片av在线| 亚洲一区二区影院| 自拍偷拍21p| 欧美福利在线播放网址导航| 大胆欧美人体视频| 中文字幕精品无| 高清不卡在线观看| 亚洲一区二区高清视频| 成人av观看| 精品国产伦一区二区三区免费| 国产三级黄色片| 香蕉久久夜色精品国产| 999在线观看免费大全电视剧| 国产青青草在线| 香蕉影视欧美成人| 午夜免费福利网站| 久久免费大视频| 欧美怡春院一区二区三区| 精品久久久久久亚洲综合网站| 欧美国产在线观看| 国产精品免费观看久久| 高清精品xnxxcom| 欧美精品一区二区免费| 中日韩av在线| 久久精品一级爱片| 日本免费不卡一区二区| 成人h动漫精品一区二区器材| 久久精品亚洲精品| 国产一区二区三区黄片| 欧美激情一二三区| 日本www.色| 精品一区免费| 欧美亚洲午夜视频在线观看| 秋霞av鲁丝片一区二区| 亚洲精品国产a久久久久久| 玖玖爱视频在线| 日韩黄色大片| 国产精品人人做人人爽| 国产剧情在线观看| 色综合婷婷久久| 美女久久久久久久久久| 亚洲一区观看| 久久综合一区二区三区| 女人让男人操自己视频在线观看| 亚洲经典中文字幕| 日韩大片免费在线观看| 成人爱爱电影网址| 婷婷五月综合缴情在线视频| 久久资源综合| 欧美在线不卡区| 蜜芽tv福利在线视频| 一本在线高清不卡dvd| 国产吞精囗交久久久| 欧美专区一区二区三区| 日韩精品资源| 青青久久精品| 久久综合免费视频| 狠狠躁夜夜躁av无码中文幕| 午夜精品福利一区二区三区av| 久久久午夜精品福利内容| 亚洲片区在线| 欧美日韩成人一区二区三区| 日韩av电影资源网| 精品国产欧美成人夜夜嗨| 国产视频一区二区三| 亚洲伊人色欲综合网| 亚洲天堂美女视频| 久久夜色精品| 国产精品一区在线免费观看| 中文字幕久久精品一区二区 | 国产精品夜夜夜爽张柏芝| 国产精品一区免费在线| 高清一区二区三区四区五区| 人成在线免费视频| 欧美人xxxx| www.99re7.com| 久久九九久久九九| 精品国产乱码久久久久久1区二区| 亚洲网站视频| 欧日韩一区二区三区| 91麻豆精品国产综合久久久| 久久久中精品2020中文| 国产精品二线| 欧美大胆一级视频| jizz国产在线观看| 一区二区三区在线看| 在线 丝袜 欧美 日韩 制服| 精品一区二区三区免费观看| 看av免费毛片手机播放| 久久国产亚洲| 国产亚洲二区| 亚洲男人在线| 日本一区二区三区四区视频| www在线观看播放免费视频日本| 日韩av在线免播放器| 一级日韩一级欧美| 欧美色播在线播放| 日本老熟俱乐部h0930| 国产亚洲成年网址在线观看| 亚洲天堂小视频| 日本亚洲最大的色成网站www| 日本免费a视频| 日韩美女一区二区三区在线观看| 国产日韩一区欧美| 96sao精品免费视频观看| 欧美一级淫片丝袜脚交| 亚洲按摩av| 日韩中文字幕在线| 欧美在线一卡| 亚洲国产成人爱av在线播放| 国产一区二区在线播放视频| 色悠悠久久综合| 精品久久免费视频| 亚洲视频在线一区二区| 日韩视频在线观看免费视频| 99re这里只有精品6| 18禁一区二区三区| 国产综合久久久久久鬼色| av免费网站观看| 一区二区激情| 欧美日韩福利在线| 欧美精品18| 国产激情片在线观看| 日韩欧美中文| 四虎永久国产精品| 国产日产一区| 欧美大香线蕉线伊人久久国产精品 | 91九色国产在线| jizzjizz少妇亚洲水多| 日韩av电影国产| 麻豆mv在线看| 97超级碰在线看视频免费在线看| 肉体视频在线| 欧美国产高跟鞋裸体秀xxxhd| 欧美精品hd| 久久视频免费观看| 成人福利片网站| 久久最新资源网| 最爽无遮挡行房视频在线| 超碰97人人做人人爱少妇| 免费不卡视频| 久久综合久中文字幕青草| 性欧美videos高清hd4k| 欧美成人免费全部| 3d玉蒲团在线观看| 欧美高清视频在线| 国产丝袜视频在线播放| 久久免费视频在线| 日韩av影片| 日韩av手机在线看| 欧美亚洲人成在线| 91免费在线视频| 欧美黄色一级| 国产偷国产偷亚洲高清97cao| 少妇一区二区三区| 日本电影一区二区三区| 成人一区二区| 黑人巨大国产9丨视频| 欧美日韩亚洲一区在线观看| 青青在线免费观看| 麻豆久久婷婷| 亚洲精品久久久中文字幕| 国产在线国偷精品产拍免费yy| 久久人妻少妇嫩草av蜜桃| 91最新地址在线播放| 加勒比综合在线| 亚洲欧洲成人精品av97| 欧美精品一区二区蜜桃| 欧美日韩国产专区| 中文文字幕一区二区三三| 日韩一二三区不卡| 午夜视频福利在线| 亚洲精品自拍视频| 九义人在线观看完整免费版电视剧| 欧美日韩成人黄色| 综合毛片免费视频| 91九色蝌蚪国产| 欧美变态挠脚心| 五月天婷亚洲天综合网鲁鲁鲁| 亚洲九九在线| 国产精品免费入口| 国产一区二区免费视频| 亚洲观看黄色网| 亚洲欧洲一区二区在线播放| 香蕉视频一区二区| 欧美日本韩国一区二区三区视频| 亚洲av无码国产精品永久一区 | 尤物在线视频| 欧美精品久久久久久久| 欧美一级二级视频| 高清视频一区二区三区| 久久国产精品亚洲人一区二区三区 | 欧美老熟妇乱大交xxxxx| 中文字幕在线观看一区| 日韩网红少妇无码视频香港| 欧美日韩高清影院| 香蕉视频网站在线| 欧美成人免费网| 欧美影视资讯| 精品伦精品一区二区三区视频| 久久中文字幕二区| 色综合av综合无码综合网站| 狠狠色丁香九九婷婷综合五月| 丰满圆润老女人hd| 亚洲午夜久久久| 国产精品久久影视| 亚洲人a成www在线影院| 美女尤物在线视频| 国产视频观看一区| 国产精品美女久久久久久不卡| 国产玉足脚交久久欧美| 国产一区91精品张津瑜| 无码人中文字幕| 一本到高清视频免费精品| 性猛交xxxx乱大交孕妇印度| 日韩最新av在线| 亚洲第一影院| 欧美黑人3p| 99伊人成综合| 欧美xxxx日本和非洲| 亚洲男人天堂av| 国产一区二区小视频| 中文字幕亚洲欧美一区二区三区 | 日本丰满少妇裸体自慰| 亚洲综合成人网| 国产av一区二区三区| 久久精品精品电影网| 成人在线视频免费看| 日韩高清av| 日日摸夜夜添夜夜添精品视频| 三叶草欧洲码在线| 精品免费在线视频| 天天操天天干天天操| 国产69精品久久久久9999| 日本一区二区三区视频在线看| 中文一区一区三区免费| 久久er99热精品一区二区| 亚洲女同二女同志奶水| 欧美日韩精品欧美日韩精品一| www免费网站在线观看| 国产精品天天狠天天看| 日韩片欧美片| 午夜视频在线观| 一区二区三区四区亚洲| 国产精品高潮呻吟av| 久久九九精品99国产精品| 亚洲tv在线| 中文字幕乱码免费| 国产乱码精品一区二区三区忘忧草 | 日韩一区二区三区久久| 国产精品久久久久国产精品日日| 91中文字幕在线播放| 久久激情视频久久| 亚洲一区二区三区中文字幕在线观看 | 亚洲最大的黄色网址| 美美哒免费高清在线观看视频一区二区 | 四虎视频在线精品免费网址| 中文字幕黄色大片| 国产一区二区三区免费看| 毛片a片免费观看| 亚洲国产成人久久综合一区| 中文在线8资源库| 婷婷五月色综合| 国产精品一区在线观看乱码| 不卡的免费av| 亚洲欧美日韩天堂| 日韩在线激情| 蜜臀精品一区二区| 久久免费电影网| 国产又黄又大又爽| 久久久久久久国产| 美女毛片一区二区三区四区| 精品亚洲一区二区三区四区| 亚洲免费观看高清完整版在线观看| 亚洲精品无码专区| 日韩av电影免费观看高清| 天天射天天综合网| 亚洲av成人无码一二三在线观看| 91成人在线精品| 麻豆网在线观看| 国内精品久久国产| 久久草av在线| 国产成人啪精品午夜在线观看| 国产一区二区三区丝袜| 日本成人手机在线| 无码人妻丰满熟妇区五十路百度| 综合久久国产九一剧情麻豆| 天堂中文资源在线观看| 国产精品稀缺呦系列在线| 亚洲日产国产精品| www.xx日本| 亚洲美女自拍视频| 亚洲超碰在线观看| 四季av一区二区|