提供浏览器端的 cookie 操作接口。
npm i @just4/cookie
安装完毕之后,就可以引入并调用相关的方法:
import {
getCookie,
setCookie,
removeCookie
} from '@just4/cookie';
getCookie('nickname');
默认情况下,读取 cookie 时分别是用 encodeURIComponent
和 decodeURIComponent
进行编码和解码的。如果要用其他编解码函数,可以通过 encode
和 decode
选项指定。
getCookie('nickname', {
encode(content) {
//...
},
decode(content) {
//...
}
});
最简单的 cookie 写入只需指定 key 和 value 的值。
setCookie('nickname', 'Tom');
但 Cookie 还有多个属性(见 MDN 的《Set-Cookie》文档),除了 HttpOnly 以外,其他均可在浏览器端进行设置。可通过 setCookie
函数的选项参数对 cookie 的属性进行设置。
有效时间有绝对时间和相对时间两种形式:
// 相对时间
setCookie('nickname', 'Tom', {
expires: '1 month' // 有效时间为一个月
});
// 相对时间
setCookie('nickname', 'Tom', {
expires: '2 years' // 有效时间为两年
});
// 绝对时间
setCookie('nickname', 'Tom', {
expires: new Date(2023, 0, 1) // 2023 年 1 月 1 日 0 点过期
});
setCookie('nickname', 'Tom', {
domain: '.abc.com',
path: '/'
});
setCookie('nickname', 'Tom', {
secure: true
});
关于 SameSite 的说明可以参阅 MDN 的《SameSite cookies》。
setCookie('nickname', 'Tom', {
sameSite: 'strict'
});
// SameSite 设为 none 时需要同时设置 Secure
setCookie('nickname', 'Tom', {
sameSite: 'none',
secure: true
});
默认情况下,写入 cookie 时是用 encodeURIComponent
进行编码的。如果要用其他编码函数,可以通过 encode
选项指定。
setCookie('nickname', '汤姆', {
encode(content) {
//...
}
});
removeCookie('nickname');
删除 cookie 实质上是把 cookie 设为过期,因此 removeCookie
支持 setCookie
的所有选项。
addRelativeTime
实现,因此:
0.5 month
)。因为单位不一定是常量(例如一个月的总天数可能是 28、29、30、31),数量为小数时,表达的意思不明确。