本地存储(cookie\localStorage\sessionStorage)

cookie详解

cookie是一种最原始也是最简单的一种存储方式,是用来记录每次http的连接产生的信息或数据,并在下次http连接时,一起发送给服务器.
cookie的特点

  1. 在浏览器缓存中
  2. 只能存文本(字符)
  3. 大小有限制:4k~
  4. 条数限制:50条~
  5. 时间限制:默认是会话级别(关闭浏览器自动删除),可以设置指定的时间
  6. 不允许跨域:同源策略,浏览器,路径
  7. 一般情况下,cookie需要在服务器环境下使用

cookie值的要求

  1. 必须是:名字和值
  2. 必须是字符
  3. 名字和值中不允许出现特殊字符
  4. 一行代码只能设置一条cookie
  5. 第一组名字[名字=值]表示要存储的cookie的名字和值之后用分号分隔,表示当前这条cookie的描述 路径,时间,域名,地址
//查
console.log(document.cookie);		//没有cookie时获取到空字符
// 默认路径默认时间默认服务器
document.cookie="a=10";
document.cookie="a=60";
//指定路径
document.cookie="b=20;path=/"; 		//当前服务器根路径
//指定时间
var date = new Date();
date.setDate(date.getDate()+7);
document.cookie="c=30;expires="+d;
//指定服务器
document.cookie="d=40;damain=127.0.0.1";
//指定时间指定路径
var date = new Date();
date.setDate(date.getDate()+3);
document.cookie="e=50;path=127.0.0.1;expires="+d;
//删除cookie 就是让这个cookie过期
var date = new Date();
document.cookie="f=50;expires="+d;

cookie的封装

// 设置cookie
    function setCookie(key, val, ops){
        ops = ops || {};
        // 1. 处理路径
        // var p = "";
        // if(ops.path){
        //     p = ";path="+ops.path;
        // }
        var p = ops.path ? ";path="+ops.path : "";
        // 2. 处理有限期
        var strD = "";
        if(ops.expires){
            var d = new Date();
            d.setDate(d.getDate()+ops.expires)
            strD = ";expires="+d
        }
        // 3. 设置cookie
        document.cookie = `${key}=${val}${p}${strD}`;
    }


    // 删除cookie
    function removeCookie(key){
        setCookie(key, null, {
            expires:-1
        })
    }

    // 获取cookie
    function getCookie(key){
        // 1. 获取所有cookie,并使用【; 】第一次分割,区分出每组cookie
        var cookie = document.cookie.split("; ");
        // console.log(cookie)
        // 2. 遍历所有cookie
        for(var i=0;i<cookie.length;i++){
            // 3. 并使用【=】第二次分割,区分出每组cookie的名字和值
            // 4. 根据cookie的名字判断是否相等,德奥对应的cookie的值
            if(cookie[i].split("=")[0] === key){
                return cookie[i].split("=")[1];
            }
        }
        // 5. 以上代码执行完毕后,如果没有找到对应的cookie,那么返回空字符
        return "";
    }

本地存储

  1. cookie是直接存到硬盘上的,所以也叫本地存储

  2. 本地存储不止有cookie

    • localStorage:永久级本地存储
    • sessionStorage:会话级本地存储
  3. localStorage和sessionStorage的特点:

    1. HTML5版本中新增的技术
    2. 不会随着http发往服务器,是一种真正的本地存储
      1. 不用必须运行在服务器环境
    3. 大小为 5M
    4. 只能存文本
    5. 不允许跨域

共同点:不安全、不能跨域、不能跨浏览器,写入的都是字符

localStorage和sessionStorage都是window的子对象
localStorage使用:

   window的属性    返回 一个localStorage对象
     对象的属性:
                localStorage.key=value    		设置,修改
                localStorage.key;            	获取
                delete localStorage.key  		删除   
        方法:√
                localStorage.setItem(key,value) 	设置、修改
                localStorage.getItem(key)        	获取
                localStorage.removeItem(key)      	删除一个
                localStorage.clear()                删除所有 ×
        事件:
        		window的onstorage事件
    				当localStorage或sessionStorage被改变时会触发
              		事件对象
                        ev.key 			返回 变化的key
                        ev.newValue 	变化后的值
                        ev.oldValue 	变化前的值
        写到localStorage里面的都是字符
                json        ->        str 序列化
                str         ->        json 反序列化,实体化

SessionStorage

sessionStorage 生命周期 会话结束时
        属性:同上
        方法:同上
CookieLocalStorageSessionStorage是在Web开发中常用的存储数据的方式。 Cookie是一种存储在用户计算机上的小型文本文件,由服务器通过HTTP响应发送给浏览器,浏览器会将Cookie保存,并在后续的请求中通过HTTP头部发送给服务器。Cookie可以用来存储少量的数据,例如用户的身份认证信息、用户的偏好设置等。由于存储在客户端,因此可以在不同的会话之间持久保存。 LocalStorageSessionStorage是HTML5中新增的Web存储接口,都是在浏览器端进行数据存储的方式,不需要与服务器进行交互。它们使用相似的API,都可以存储大量的数据,并且保存在浏览器的本地环境中。 LocalStorageSessionStorage之间的主要区别在于数据的生命周期和作用域。LocalStorage保存的数据没有过期时间,除非用户手动删除,否则数据会一直保留。而SessionStorage保存的数据只在当前会话中有效,当用户关闭浏览器窗口或标签页时,数据会被清除。另外,LocalStorage的数据可以在同一个域名下的不同页面间共享,而SessionStorage的数据只能在同一个页面中共享。 总结: - Cookie是在服务器和浏览器之间传递的存储方式,用于存储少量数据。 - LocalStorageSessionStorage是在浏览器端进行数据存储的方式,可以保存大量数据。 - LocalStorage的数据没有过期时间,而SessionStorage的数据在会话结束时被清除。 - LocalStorage的数据可以在同一个域名下的不同页面间共享,而SessionStorage的数据只在同一个页面中有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值