js-cookie详细介绍及在vue3中的使用方法

定义

js-cookie 是一个轻量、简单且强大的 JavaScript 库,用于在浏览器中轻松处理 Cookie。

优点

  • ​简单易用​​:API 设计直观,学习成本低

  • ​轻量级​​:压缩后仅约 5KB,对项目体积影响极小

  • ​兼容性好​​:支持所有现代浏览器,甚至包括旧版的 IE

安装

  • 通过npm安装: npm install js-cookie
  • 通过pnpm安装: pnpm install js-cookie
  • 通过yarn安装 yarn add js-cookie

使用

首先在项目中引入并使用:

javascript 复制代码
import Cookies from 'js-cookie'; // 在ES6模块化项目中引入

使用 Cookies.set()方法,你可以设置一个 Cookie,并能控制其各种属性。

c 复制代码
// 设置一个简单的 Cookie,关闭浏览器后失效
Cookies.set("userName", "zhangsan");
// 设置一个带过期时间的cookie,此示例表示设置的cookie,7天后失效
Cookies.set("token", "#qwewr12er@12344", { expires: 7 });
// 设置一个对特定路径有效的 Cookie
Cookies.set('userExample', 'dark', { path: '/example' });
// 设置一个仅通过 HTTPS 传输的安全 Cookie
Cookies.set('secureData', 'secret', { secure: true });
// 存储对象或数组 (库会自动使用 JSON.stringify 转换)
const userTheme = {theme: 'dark', language: 'zh-CN'};
Cookies.set('userTheme', userTheme, { expires: 30 });

使用 Cookies.get()方法读取 Cookie。

arduino 复制代码
// 读取单个 Cookie 的值
const  userName = Cookies.get('userName');
console.log(userName); // 输出 'zhangsan'
// 尝试读取一个不存在的 Cookie
const nothing = Cookies.get('nothing');
console.log(nothing); // 输出 undefined
// 读取所有可读的 Cookie (返回一个键值对对象)
const allCookies = Cookies.get();
console.log(allCookies); // 输出 { userName: 'zhangsan', token: '#qwewr12er@12344', ... }
// 读取并解析存储为对象的 Cookie
const settings = Cookies.getJSON('userTheme');
console.log(settings.theme); // 输出 'dark'
3.删除cookie

使用 Cookies.remove()方法删除 Cookie。​​如果设置 Cookie 时指定了路径 (path) 或域名 (domain),删除时必须提供相同的参数​​,否则可能无法成功删除

csharp 复制代码
// 删除一个在根路径设置的 Cookie
Cookies.remove('username');
// 删除一个在特定路径设置的 Cookie
Cookies.remove('userExample', { path: '/example' });
// 删除一个在特定域名设置的 Cookie
Cookies.remove('sessionID', { domain: 'www.example.com' });

前端具体使用场景

  • 用户身份认证与状态管理​:这是 Cookie 最常见的用途。用户登录成功后,服务器会返回一个令牌(Token)或会话 ID,前端可以将其存储在 Cookie 中,并设置合适的有效期
php 复制代码
// 登录成功后,存储认证令牌
Cookies.set('access_token', 'eyJhbGciOiJ...', { expires: 7, secure: true });

此后,该 Cookie 会随着每次请求自动发送到服务器,服务器通过验证此令牌来维持用户的登录状态,无需用户重复登录

  • ​存储用户偏好设置​:记住用户的个性化选择,如主题、语言等,提升用户体验
dart 复制代码
// 用户选择深色主题后,存储用户选择的主题
Cookies.set('app_theme', 'dark', { expires: 365 });
// 页面加载时读取并应用设置
const theme = Cookies.get('app_theme') || 'light'; // 默认亮色主题
document.body.setAttribute('data-theme', theme);
  • ​购物车信息暂存​:在电商网站中,将用户添加到购物车的商品信息临时存入 Cookie,即使用户关闭浏览器后再打开,内容也不会丢失
ini 复制代码
// 添加商品到购物车
const cartItems = [{ id: 101, name: 'T-Shirt', quantity: 2 }];
Cookies.set('shopping_cart', JSON.stringify(cartItems), { expires: 7 });
// 读取购物车
const savedCart = Cookies.get('shopping_cart');
if (savedCart) { 
    const items = JSON.parse(savedCart);
    // ...更新页面购物车显示 
}
  • ​跟踪用户行为​:用于简单的用户行为跟踪,比如记录用户访问次数。
javascript 复制代码
// 记录访问次数
let visitCount = parseInt(Cookies.get('visitCount') || 0);
visitCount++;
Cookies.set('visitCount', visitCount, { expires: 30 });
console.log(`用户访问次数:${visitCount}`);

注意事项

  • 安全性:不要在 cookie 中存储敏感信息,如密码等。如果需要存储敏感信息,确保使用 Secure 和 HttpOnly 标志(但 JS-Cookie 无法设置 HttpOnly,因为需要通过 JavaScript 访问)。
  • 大小限制:每个 cookie 通常不能超过 4KB。
  • 域名和路径:设置 cookie 时要注意域名和路径,以免影响到其他页面。
  • 过期时间:设置合理的过期时间,避免不必要的存储。
相关推荐
幻灵尔依3 小时前
前端编码统一规范
javascript·vue.js·代码规范
欢脱的小猴子3 小时前
VUE3加载cesium,导入czml的星座后页面卡死BUG 修复
前端·vue.js·bug
小菜全4 小时前
Vue 3 + TypeScript 事件触发与数据绑定方法
前端·javascript·vue.js
an__ya__6 小时前
Vue数据响应式reactive
前端·javascript·vue.js
叶落阁主6 小时前
Neovim 插件 i18n.nvim 介绍
java·vue.js·vim
叫我詹躲躲7 小时前
开发提速?Vue3模板隐藏技巧来了
前端·vue.js·ai编程
@小红花7 小时前
从0到1学习Vue框架Day03
前端·javascript·vue.js·学习·ecmascript
前端与小赵7 小时前
vue3中 ref() 和 reactive() 的区别
前端·javascript·vue.js
魔云连洲8 小时前
Vue的响应式底层原理:Proxy vs defineProperty
前端·javascript·vue.js