目录
1.Cookie、localStorage、sessionStorage
1.1三者区别
1.2为什么要封装Storage
2.封装
2.1sessionStorage
2.1.1封装成下面形式
2.1.2代码
1.Cookie、localStorage、sessionStorage
1.1三者区别
存储大小: Cookie4k、localStorage5M、sessionStorage据说大小限制为2M左右
有效期:Cookie拥有有效期、localStroage永久存储,sessionStorage会话技术浏览器关闭就没了
存储位置:Cookie会发送到服务器存到内存,Stroage存储到浏览器端,sessionStorage 存到内存
路径:cookie有路径限制、storage存到域名下
API:cookieapi模糊,storage有对应的api
1.2为什么要封装Storage
storage本身有api,但只是简单形式的key/vaue形式
storage只存储字符串,需要手工转成json对象
storage只能一次性清空,不能单个清空
2.封装
2.1sessionStorage
2.1.1封装成下面形式
1 | {"user":{"userName":"bushuangli","age":18}} |

2.1.2代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | /** * storage 封装 全局数据key * @type {string} */ const STORAGE_KEY= "mail"; export default { /** * 存值 * @param key 存储的对象名 * @param value 值 * @param module_name 如果传这个值就是存到那个模块 */ setItem(key,value,module_name){ if (module_name){ let val = this.getItem(module_name); val[key] = value; this.setItem(module_name, val); }else{ let val = this.getStorage(); val[key] = value; window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val)); } }, /** * 获取某个模块下面的属性 * @param key 只传key就是取mail下的对象 * @param module_name 传moduleName * @returns {*} */ getItem(key,module_name){ if (module_name){ let val = this.getItem(module_name); if(val) return val[key]; } return this.getStorage()[key]; }, /** * 获取所有值 * @returns {any} */ getStorage() { return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) || '{}'); }, /** * 删除模块的key,删除的模块 * @param key * @param module_name */ clear(key, module_name){ let val = this.getStorage(); if (module_name){ if (!val[module_name])return; delete val[module_name][key]; }else{ delete val[key]; } window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val)); } } |