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

发布时间:2023年12月21日

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博客

文章来源:https://blog.csdn.net/m0_61663332/article/details/135123811
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。