Vue中Cookie、localStorage与sessionStorage的数据存储实战指南

作者:模板散步时间:2026-10-25 17:23:54浏览:465

本文详细介绍在Vue项目中如何高效存储数据。通过引入js-cookie库实现Cookie的读写与删除,重点解析localStorage与sessionStorage在持久化存储上的区别。内容涵盖JSON对象的正确序列化与反序列化处理,以及两种存储API的具体操作示例,帮助开发者根据场景选择合适的数据持久化方案。

一、Cookie的操作方法

1. 安装必要的依赖模块

npm i js-cookie -S

2. 在需要使用Cookie的Vue页面中引入该模块

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时完全一致的路径(path)和域(domain)属性,除非你依赖系统默认值。

尝试删除不存在的Cookie不会抛出异常,也不会返回任何值。

二、localStorage的操作方法

注意:在Vue环境中使用localStorage与在原生HTML5中使用的方法完全一致,无需额外引入第三方插件。

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. 使用setItem()方法存储数据

直接调用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.parse()将之前存储的JSON字符串转换回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的操作方法

定义与基本用法

  • localStorage和sessionStorage属性均允许在浏览器中存储键值对(key/value)数据。
  • sessionStorage专门用于临时保存同一窗口(或标签页)的数据,一旦关闭窗口或标签页,这些数据将被自动删除。

注意:如果你希望在浏览器窗口关闭后依然保留数据,应使用localStorage属性。该数据对象没有过期时间,无论今天、下周还是明年均可使用,除非手动执行删除操作。

1. 常用API方法

sessionStorage.key(int index) // 返回当前 sessionStorage 对象的第index序号的key名称。若没有返回null。
sessionStorage.getItem(string key) // 返回键名(key)对应的值(value)。若没有返回null。
sessionStorage.setItem(string key, string value) // 该方法接受一个键名(key)和值(value)作为参数,将键值对添加到存储中;如果键名存在,则更新其对应的值。
sessionStorage.removeItem(string key) // 将指定的键名(key)从 sessionStorage 对象中移除。
sessionStorage.clear() // 清除 sessionStorage 对象所有的项。

2. 存储数据的具体实现

2.1 采用setItem()方法进行存储

sessionStorage.setItem('testKey','这是一个测试的value值'); // 存入一个值

2.2 通过属性赋值方式存储

sessionStorage['testKey'] = '这是一个测试的value值';

2.3 存储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. 读取数据的具体实现

3.1 通过getItem()方法获取值

sessionStorage.getItem('testKey'); // => 返回testKey对应的值

3.2 通过属性访问方式取值

sessionStorage['testKey']; // => 这是一个测试的value值

以上内容为个人经验总结,希望能为大家提供参考,也希望大家多多支持本站。

作者最新文章