如何使用localStorage、sessionStorage、cookie进行本地储存数据

localStorage、sessionStorage 和 cookie 都是浏览器提供的用于在客户端存储数据的方式:

相同点:

  • 都可以在客户端存储数据,使得数据能够在用户关闭浏览器后仍然存在。
  • 都可以存储字符串类型的数据,也可以使用其他数据类型,但最终都被转换为字符串。

不同点:

  1. 存储数据的大小:localStorage 和 sessionStorage 不限制存储的数据量,而 cookie 的大小限制为4KB。
  2. 存储数据的生命周期
  • localStorage:没有过期时间,数据在页面卸载后依然存在。
  • sessionStorage:与页面会话关联,当页面会话结束(用户关闭浏览器或标签页)时,数据被清除。
  • cookie:可以设置过期时间,如果不设置过期时间,那么默认的生命周期与浏览器会话相关,即当浏览器关闭时,数据将被清除。
  1. 数据的可用性
  • localStorage 和 sessionStorage 仅在当前源(即当前域名和协议)的文档中可用。这意味着如果你在同源的不同标签页或窗口中打开新窗口,它们可以访问并共享 localStorage 或 sessionStorage。
  • cookie 可以被发送到不同的源(即不同的域名和协议),但默认情况下,它们只能被设置它们的域访问。然而,可以通过设置 "domain" 和 "path" 属性来更改此行为。
  1. 数据的访问:localStorage 和 sessionStorage 不支持 "SameSite" 或 "SameBrowser" 选项,这意味着它们不能像 cookie 一样被限制在特定的源或跨源使用。
  2. 数据的操作:localStorage 和 sessionStorage 支持立即可读写的数据存储,而 cookie 需要使用特定的函数来读取和设置。
  3. 数据的兼容性:不是所有的浏览器都支持 localStorage 和 sessionStorage,但几乎所有的现代浏览器都支持 cookie。

一,cookie 的使用

1,首先加载模块

npm i js-cookie -S

 2,在使用cookie的页面上进行引入

import Cookies from 'js-cookie'

3,使用方法

  • 创建一个在整个网站上有效的Cookie
Cookies.set('name', 'value');
  • 创建一个从现在起7天后过期的cookie,在整个站点上有效:
Cookies.set('name', 'value', { expires: 7 });
  • 创建一个过期的cookie,对当前页面的路径有效:
Cookies.set('name', 'value', { expires: 7, path: '' });
  • 读取cookie:
Cookies.get('name'); // => 'value'
Cookies.get('nothing'); // => undefined
  • 阅读所有可见的Cookie:
Cookies.get(); // => { name: 'value' }
  • 删除cookie:
Cookies.remove('name');
  • 删除对当前页面路径有效的cookie:
Cookies.set('name', 'value', { path: '' });
Cookies.remove('name'); // fail!
Cookies.remove('name', { path: '' }); // removed!

重要!删除cookie时,您必须传递用于设置cookie的完全相同的路径和域属性,除非您依赖于默认属性。
注意:删除未存在的cookie不会引发任何异常,也不会返回任何值

二,localStorage的使用

注:vue下使用localStorage和H5使用localStorage的方法是一致的,不需要引入插件

1,储存

//数据
localStorage.setItem('userName','HelloWeen');

2,获取

localStorage.getItem('userName')

3,删除

localStorage.removeItem('userName');

4,localStorage可以储存JSON对象,且没有时间限制的数据存储 ,除非主动删除。

var arr=[1,2,3];
localStorage.setItem("temp",arr); //会返回1,2,3
console.log(typeof localStorage.getItem("temp"));//string
console.log(localStorage.getItem("temp"));//1,2,3

 5,localStorage.setItem() 不会自动将Json对象转成字符串形式

var user= {"userName": "hello","age": 2};
typeof localStorage.getItem("user");//也会返回String
localStorage.setItem("user", user);//但是返回[object Object],

 6,用localStorage.setItem()正确存储JSON对象方法是:

  • 存储前先用JSON.stringify()方法将json对象转换成字符串形式
  • JSON.stringify() 方法可以将任意的 JavaScript 值序列化成 JSON 字符串
  • 获取的时候要将之前存储的JSON字符串使用JSON.parse()先转成JSON对象再进行操作
var user= {"userName": "hello","age": 2};
user= JSON.stringify(user); //转化为JSON字符串  "{"userName":"hello","age":2}"
localStorage.setItem("user", user);//返回{"userName":"hello","age":2}
user=JSON.parse(localStorage.getItem("user"));

三,sessionStorage的使用

1,方法

//返回当前 sessionStorage 对象的第index序号的key名称。若没有返回null。
 sessionStorage.key(int index) 

//返回键名(key)对应的值(value)。若没有返回null。
 sessionStorage.getItem(string key) 

//该方法接受一个键名(key)和值(value)作为参数,将键值对添加到存储中;如果键名存在,则更新其对应的值。
sessionStorage.setItem(string key, string value) 

//将指定的键名(key)从 sessionStorage 对象中移除。
 sessionStorage.removeItem(string key) 

//清除 sessionStorage 对象所有的项。
 sessionStorage.clear() 

2,存储数据

  •  采用setItem()方法存储
sessionStorage.setItem('testKey','这是一个测试的value值'); // 存入一个值
  •  通过属性方式存储
sessionStorage['testKey'] = '这是一个测试的value值';
  •  存储Json对象

sessionStorage也可存储Json对象:存储时,通过JSON.stringify()将对象转换为文本格式;读取时,通过JSON.parse()将文本转换回对象。

 var userEntity = {
    name: 'tom',
    age: 22
};

// 存储值:将对象转换为Json字符串
sessionStorage.setItem('user', JSON.stringify(userEntity));

// 取值时:把获取到的Json字符串转换回对象
var userJsonStr = sessionStorage.getItem('user');
userEntity = JSON.parse(userJsonStr);
console.log(userEntity.name); // => tom

3,读取数据

  •  通过getItem()方法取值
sessionStorage.getItem('testKey'); // => 返回testKey对应的值
  •  通过属性方式取值
sessionStorage['testKey']; // => 这是一个测试的value值

参考文章:vue项目使用cookie、localStorage和sessionStorage进行储存数据-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
localStoragesessionStoragecookie都是在Web开发中用于在浏览器端存储数据的机制。 localStorage是一种持久化存储机制,数据一直保存在浏览器中,直到被显式清除或通过代码删除。存储在localStorage中的数据可以跨话和页面保持不变,即使浏览器关闭和重新打开也不丢失。localStorage只能通过JavaScript访问,它提供了setItem、getItem和removeItem等方法来操作存储的数据sessionStorage也是一种存储数据的机制,但与localStorage不同的是,存储在sessionStorage中的数据仅在当前话(当前标签页或窗口)中有效。当话结束(标签页或窗口关闭)时,存储在sessionStorage中的数据被清除。sessionStorage使用方法和localStorage相似,也是通过setItem、getItem和removeItem等方法来操作数据cookie是一种在浏览器和服务器之间传递的小型文本文件,用于存储话相关的信息。与localStoragesessionStorage不同,cookie数据随着每个HTTP请求发送到服务器端,并且可以设置过期时间。由于cookie在每个请求中传输,所以存储在cookie中的数据大小有限制(通常为几KB)。可以使用JavaScript或服务器端语言来设置和读取cookie。 总结:localStoragesessionStorage主要用于在浏览器端持久化存储数据,而cookie主要用于在浏览器和服务器之间传递话相关的信息。具体使用哪种机制取决于实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋绥冬禧.

一键三联就是最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值