2021-07-05


本地存储技术:cookie localStorage sessionStorage

cookie

cookie:本质上就是一些数据,存储在本地电脑中的。
cookie的作用:记录客户端的用户信息。用户信息不是狭义的用户名,密码 还可以是 点击记录,访问记录,还有购物车中的选中的商品等 等。
cookie主要应用的场景: 记住用户名,密码 未登录的购物车等等。
特点
只能存储字符串格式
如果存储的是对象,最后就会变成[object Object]字符串
存储大小:4kb左右
同源策略:同一域名,同一IP,同一端口。 不同网站他们的cookie数据是不同通的。
存储格式:
以字符串的方式,键值对存储。
username=zhangsan
时效性:
笼统来说,cookie分为两类:会话级别的cookie和持久级别的cookie。
如果不进行特殊的设置,cookie就是会话级别的。也就是浏览器关闭,cookie中的数据就会消失。
前提:页面必须在服务器上打开。

基础操作:

添加
      语法格式:document.cookie = "key=value;expires=日期";
      document.cookie = "username=zhangsan";
查询
      直接使用document.cookie就可以获取到cookie存储的所有数据.
      【注意】不管你存的是什么类型,最后都会转为字符串。
修改
      重新再添加一遍,只要key值相同,后面添加的就会把前面添加的覆盖
删除
      只需要设置有效期为过去的时间,就会自动删除。
  <script>
    // document.cookie = "username=zhangsan;expires="+new Date("2021-07-05 12:00:00");//添加
    document.cookie = "age=20";//添加值
    // var person = {
    //   name:"Yasuo",
    //   skill:"狂风绝息斩"
    // }
    // document.cookie = "person="+JSON.stringify(person);
    // var data = document.cookie;//查询
    // console.log(data);
    // var dataArr = data.split("=");
    // console.log(dataArr[1]);
    // console.log(JSON.parse(dataArr[1]));
    console.log(new Date("2021-07-03 10:50:00").toGMTString());
    // toGMTString() 转格林威治时间
    document.cookie = "age=25;expires="+new Date("2021-07-03 02:45:00").toGMTString();
  </script>

Exp(记住用户名字):

<body>
    <!--  需求:
      如果记住用户名被选中了,下次打开页面,输入框中的内容应该存在。如果未选中,再次打开页面,输入框没有内容。
    分析:
      1.复选框被选中时,将用户名保存在cookie中。
      2.页面一打开,从cookie中取值。 如果cookie有值,就将其添加到输入框中。 没有值就不添加。
      3.复选框从选中变成了未选中,清除cookie中的数据。
   -->
    <p><input type="text" name="username" id="userName"></p>
    <input type="checkbox" id="readName"> 记住用户密码
</body>
<script>
    var readName = document.getElementById("readName");
    var userName = document.getElementById("userName");
    // console.log(userName)
    readName.onchange = function() {
        if (readName.checked) {
            document.cookie = "username=" + userName.value + ";expires=" + new Date("2021-07-14 12:00:00").toGMTString();
        } else {
            document.cookie = "username=" + userName.value + ";expires=" + new Date("1970-01-01 12:00:00").toGMTString();
        }
    }
    if (document.cookie) {
        var arr = document.cookie.split(";");
        arr.forEach(function(item, index) {
            var itemArr = item.split("=");
            if (itemArr[0].trim() == "username") {
                userName.value = itemArr[1];
                readName.checked = true;
            }
        });
    }
</script>

localStorage

H5新增,有兼容问题。IE低版本不可以用。 IE8以下。
为了解决cookie存储空间不足的问题。
cookie只能存4KB左右,localstorage可以存储5M左右。

【注意】
访问一个对象不存在的属性时,返回的是undefined。

基础使用:

添加:
  格式1:localstorage.属性名 = 属性值
  格式2:localstorage[属性名] = 属性值
  格式3:localStorage.setItem(key,value)
修改:
  第二次添加会将第一次添加的覆盖。前提是:key是相同的。
获取:
  localstorage.属性名
  localstorage[属性名]
  localStorage.getItem(key)
添加值和获取值 推荐使用setItem和getItem
删除:
  单个删除: localStorage.removeItem(key)
  全部删除: localStorage.clear();
特点:
    同源策略:不同网站的数据是不同通的。
    可以在本地使用。
    只能存储字符串
    永久存储
<script>
    // 如果需要处理兼容性,使用前需要进行判断.
    //逻辑业务代码
    if (!window.localStorage) {
        //如果不支持,在这里添加处理代码.
        alert("您的浏览器不支持本地存储,请升级浏览器!")
    } else {
        window.localStorage.username = 'zhangsan'; //写法一
        window.localStorage['age'] = 20; //写法二
        window.localStorage.setItem('hobby', 'LOL'); //写法三,推荐使用3

        var storage = window.localStorage;
        storage.setItem('hobby', 'DNF');
        console.log(window.localStorage);

        console.log(storage.age); //取值方式一
        console.log(storage['age']); //取值方式二
        console.log(storage.getItem('age')); //取值方式三,推荐使用3

        storage.removeItem('hobby'); //删除值
        console.log(storage);
        storage.clear(); //删除全部值
        console.log(storage);
    }
    // 在控制台展开对象时,会更新最新的对象的值。
</script>

sessionStorage

用法与localstorage一模一样

唯一的区别: 时效性
localstorage是永久存储的,
sessionStorage 是 会话级别的.
两种会话结束的方法: 代码控制和浏览器关闭.

  <script>
    // var session = window.sessionStorage;
    // session.setItem("username","lisi")
    // session.setItem("username","wangwu")
    // session.setItem("age","29")
    // console.log(session.getItem("username"));
    // session.removeItem("username");
    // session.clear();
  </script>

总结

cookie localstorage sessionStorage 的区别

cookie:
前后端都可以操作。
存储大小 4KB
发送请求时,自动将cookie的值发送给后端。数据相对不安全,可能会被劫持。
时效性:默认是会话级别,可以设置有效期
localstorage
前端操作
存储大小 5M
永久保存
sessionStorage
前端操作
存储大小 5M
会话级别

共同点:

    只能存字符串。
    同源策略,同一域名,同一IP,同一端口 下的数据可以共通。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值