store.js

  1. store.set(key, val) //存储 key 的值为 val
  2. store.get(key) // 获取 key 的值
  3. store.remove(key) // 移除 key 的记录
  4. store.clear() // 清空存储
  5. store.getAll() // 返回所有存储
  6. store.forEach() // 遍历所有存储

本地存储大小限制

image.png

localStorage 拓展了 cookie 的 4K 限制
localStorage 会可以将第一次请求的数据直接存储到本地,相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie 可以节约带宽

localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
localStorage 的使用也是遵循同源策略的,不同的网站直接是不能共用相同的 localStorage
localStorage 只支持 string 类型的存储

IE8 以上的 IE 版本才支持 localStorage 这个属性
localStorage在浏览器的隐私模式下面是不可读取的
localStorage不能被爬虫抓取到

localStorage和 sessionStorage的区别

localStorage 属于永久性存储,
sessionStorage 属于当会话结束的时候,sessionStorage 中的键值对会被清空

localStorage

localStorage MDN文档

localStorage.js

  1. const { localStorage } = window;
  2. // 获取 localStorage
  3. export function getStorage(key) {
  4. // 不传 key,默认获取所有
  5. if(!key) {
  6. const keys = getStorageKeys();
  7. return keys.reduce((prev, key) => {
  8. prev[key] = getStorage(key);
  9. return prev;
  10. }, {});
  11. }
  12. const item = localStorage.getItem(key);
  13. try {
  14. return JSON.parse(item);
  15. } catch (e) {
  16. return null;
  17. }
  18. }
  19. export function getStorageKeys() {
  20. return Object.keys(localStorage);
  21. }
  22. // 存储 sessionStorage
  23. export function setStorage(key, value) {
  24. // 如果没有传 value,就删除当前的 key
  25. const falsy = [undefined, null].includes(value);
  26. if(falsy) return removeStorage(key);
  27. // 如果 key是个 JSON,是否需要遍历设置?待定
  28. localStorage.setItem(key, JSON.stringify(value));
  29. }
  30. // 删除 sessionStorage
  31. export function removeStorage(key) {
  32. localStorage.removeItem(key);
  33. return getStorage(key);
  34. }
  35. // 清除所有的 localStorage
  36. export function clearStorage(key) {
  37. localStorage.clear();
  38. }

sessionStorage

sessionStorage文档

  1. const { sessionStorage } = window;
  2. // 获取 sessionStorage
  3. export function getSession(key) {
  4. const item = sessionStorage.getItem(key);
  5. try {
  6. return JSON.parse(item);
  7. } catch (e) {
  8. return null;
  9. }
  10. }
  11. export function getSessionKeys(key) {
  12. return Object.keys(localStorage);
  13. }
  14. // 存储 sessionStorage
  15. export function setSession(key, value) {
  16. sessionStorage.setItem(key, JSON.stringify(value));
  17. }
  18. // 删除 sessionStorage 指定key
  19. export function removeSession(key) {
  20. sessionStorage.removeItem(key);
  21. }
  22. // 删除所有 sessionStorage
  23. export function clearSession() {
  24. sessionStorage.clear();
  25. }