js-cookie,sessionStorage和localStorage

js-cookie

cookie存在的不足

由于cookie与IE中提供的持久化用户数据的容量限制以及数据安全问题,不能大量存储数据和安全数据,它存在许多的限制,它存在一些限制如下:

1. cookies的大小被限制在4KB

2. cookies是随HTTP事务一起被发送的,因此会浪费一部分发送cookies时使用的带宽

3. 要正确操纵cookies是很困难的

cookie的简单使用

//创建简单的cookie 

Cookies.set('name', 'value'); 

//创建有效期为7天的cookie 

Cookies.set('name', 'value', { expires: 7 }); 

//为当前页创建有效期7天的cookie 

Cookies.set('name', 'value', { expires: 7, path: '' });

//取值

Cookies.get('name'); // => 'value'

//获取所有cookie Cookies.get(); // => { name: 'value' }

//删除

Cookies.remove('name');

//如果值设置了路径,那么不能用简单的delete方法删除值,需要在delete时指定路径

Cookies.remove('name', { path: '' });

//json

Cookies.set('name', { foo: 'bar' });//'{"foo":"bar"}'



//第三个参数{}

expires

定义有效期。如果传入Number,那么单位为天,你也可以传入一个Date对象,表示有效期至Date指定时间。默认情况下cookie有效期截止至用户退出浏览器。

path

string,表示此cookie对哪个地址可见。默认为”/”。

domain

string,表示此cookie对哪个域名可见。设置后cookie会对所有子域名可见。默认为对创建此cookie的域名和子域名可见。

secure

true或false,表示cookie传输是否仅支持https。默认为不要求协议必须为https。

还有就是使用的时候要在bootcdn上找到js-cookie并引入如下所示

<script src="https://cdn.bootcdn.net/ajax/libs/js-cookie/latest/js.cookie.js"></script>
 <script>
        // 当文件正常引入之后,会抛出一个Cookies对象进行操作
        Cookies.set('name','xiaoming',{expires: 7,path:''});
        console.log(Cookies.get()); //获取所有
        Cookies.remove('name',{path : ''}); //如果写了路径,那么删除的时候path也要加上
        console.log(Cookies.get());
    </script>

本地存储

随着互联网的发展,基于网页的应用越来越普遍,同时也变得越来越复杂,为了满足各种各样的需求,会经常性的在本地存储大量的数据,h5新方案新出了两种存储方式sessionStorage和localStorage。

本地存储的特性

1.数据是存储在用户的浏览器中的

2.设置和使用也非常的方便,甚至页面刷新也不会丢失数据

3.容量也是蛮大的,不像cookie只有4kb,sessionStorage5M,localStorage约20M.

4.只能存储字符串,可以将对象JSON.Stringify()编码后存储

Storage类型提供了大量的存储空间来存储键值对,Storage实例与其他对象类似,Storage类型只能存储字符串,非字符串的数据在存储之前会被转换成字符串。

Storage对象提供的方法

setItem(name,value) 为指定的name设置一个对应的值

getItem(name) 根据指定的名字name获取对应的值

removeItem(name) 删除由name指定的键值对

clear()

删除所有值;

key(index) 获得index位置处的值的名字

length Storage对象中,键值对的数量

Web Storage分为两种:

1. sessionStorage对象

将数据保存在session对象中。session是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要保存的任何数据。(仅限当前选项卡)

2. localStorage

将数据保存在客户端本地的硬盘设备中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。

sessionStorage的特性

1.生命周期为关闭浏览器窗口

2.在同一个页面下数据可以共享

3.以键值对的形式出现

localStorage的特性

1.生命周期永久生效,即使页面关闭了它也还是存在的,除非手动删除。

2.可以多窗口共享(或者说同一个浏览器)共享存储的数据。

3.也是以键值对的形式使用的。

这三种浏览器存储数据的简单比较与使用

新建了两个页面用这几种存储方式看看能不能在不同的页面使用

1.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.bootcdn.net/ajax/libs/js-cookie/latest/js.cookie.js"></script>
    <title>1</title>
</head>
<body>
    <input type="text" id="setdata"> <button id="savedata">保存</button>
    <hr>
    <button id="getdata">显示</button>
    <a href="showdata.html">跳转</a>
    <div id="showdata" style="width: 200px; height: 100px; background: chartreuse;"></div>
    <script>
        var data; //保存数据的变量
        var savedata = document.getElementById('savedata');
        var getdata = document.getElementById('getdata');
        var showdata = document.getElementById('showdata');
        savedata.addEventListener('click',function() {
            var date = new Date(new Date().getTime()+10000);
            // data = document.getElementById('setdata').value;
            Cookies.set('name',document.getElementById('setdata').value,{expires: date});
            // sessionStorage.setItem('name',document.getElementById('setdata').value)
            // localStorage.setItem('name',document.getElementById('setdata').value);
        });
        getdata.onclick = function() {
            showdata.innerHTML = Cookies.get('name');
            // showdata.innerHTML = sessionStorage.getItem('name');
            // showdata.innerHTML = localStorage.getItem('name');
        }
    </script>
</body>
</html>

2.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.bootcdn.net/ajax/libs/js-cookie/latest/js.cookie.js"></script>
    <title>2</title>
</head>
<body>
    <!-- <input type="text" id="setdata"> <button id="savedata">保存</button>
    <hr> -->
    <button id="getdata">显示</button>
    <div id="showdata" style="width: 200px; height: 100px; background: chartreuse;"></div>
    <script>
        var data; //保存数据的变量
        // var savedata = document.getElementById('savedata');
        var getdata = document.getElementById('getdata');
        var showdata = document.getElementById('showdata');
        // savedata.addEventListener('click',function() {
        //     data = document.getElementById('setdata').value;
        // });
        getdata.onclick = function() {
            showdata.innerHTML = Cookies.get('name');
            // showdata.innerHTML = sessionStorage.getItem('name');
            // showdata.innerHTML = localStorage.getItem('name');
        }
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值