热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记(前端跨域Storage封装)

前端跨域解决方案跨域是浏览器为了安全做出的限制策略浏览器请求必须遵循同源策略:同域名、同端口、同协议一、CORS跨域服务端设置,前端直接调用后台允

前端跨域解决方案


  • 跨域是浏览器为了安全做出的限制策略
  • 浏览器请求必须遵循同源策略:同域名、同端口、同协议

一、 CORS跨域


  • 服务端设置,前端直接调用
  • 后台允许前端某一个站点进行访问

二、JSONP跨域


  • 前端适配,后台配合
  • 前后台同时改造

三、接口代理


  • 通过修改nginx服务器配置来实现
  • 前端修改,后台不动

localStorage COOKIE sessionStorage三者区别

一、三者区别


  • 存储大小:COOKIE 4k Storage 5M
  • 有效期:COOKIE拥有有效期 Storage(localStorage)永久存储,sessionStorage是会话存储
  • COOKIE会发送到服务器端,存储在内存中,Storage只会存储在浏览器端
  • 路径:COOKIE有路径限制,Storage只存储在域名下
  • API:COOKIE没有特定的API,Storage有对应的API

二、为什么要封装stroage


  • Storage本身有API,但是只是简单的key/value形式
  • Storage只存储字符串,需要人工转换成json对象
  • Storage只能一次性清空,不能单个清空

封装Storage

完整代码点击这里
user模块名称 username为key值 mall理解为一个数据库
在这里插入图片描述
一、获取缓存mall下的全部模块

const STORAGE_KEY = 'mall';getStorage(){return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) || '{}');}

在这里插入图片描述
二、获取某一个模块下的key中的value值

getItem(key,module_name){if (module_name){//特定模块let val = this.getItem(module_name);//通过递归的形式将特定模块的内容取出if(val) return val[key];//返回对应属性}return this.getStorage()[key];//在全部模块下找对应属性},

console.log(stroage.getItem('userName','user'))

在这里插入图片描述
三、增加key

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));//写入}},

  • 在与user同级下添加一个key


```Javascript
stroage.setItem('a',{"username":"123"})

在这里插入图片描述


  • 在user模块下添加一个key

stroage.setItem('a',"123","user")

在这里插入图片描述

四、删除

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));}

  • 删除某个模块下的key

删除前
在这里插入图片描述

stroage.clear('a','user')

在这里插入图片描述


  • 删除某一个模式

删除前在这里插入图片描述

stroage.clear("a")

在这里插入图片描述

欢迎访问我的个人博客


推荐阅读
author-avatar
love四叶草health
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有