js-cookie的使用
时间:2022-11-18 01:19:57浏览:2090
js-cookie是一个简单的,轻量级的处理cookies的js API,用来处理cookie相关的插件
安装:
$ npm install js-cookie --save
下载引用:<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
基础用法
- 创建一个cookie,使其在网站内皆可使用
Cookies.set('name', 'value');
- 创建一个从现在起7天到期的cookie,使其在网站内皆可使用
Cookies.set('name', 'value', { expires: 7 });
- 创建一个从现在起7天到期的cookie,使其在当前页面内可用
Cookies.set('name', 'value', { expires: 7, path: '' });
- 读取cookie
Cookies.get('name'); // => 'value' Cookies.get('nothing'); // => undefined
- 读取所有可见cookie
Cookies.get(); // => { name: 'value' }
注意:不可通过特定的key值去获取相对应的cookie(无论是cookie在之前使用过或者未使用过)
Cookies.get('foo', { domain: 'sub.example.com' }); // 将不会有任何响应
名为foo的cookie仅在通过.get()方法读取后才可以使用。读取时,domain和path属性将不起作用。
- 删除 cookie
Cookies.remove('name');
- 删除当前页面的cookie
Cookies.set('name', 'value', { path: '' }); Cookies.remove('name'); // 失败! Cookies.remove('name', { path: '' }); // 成功!
注意!!!:删除Cookie时,如果您不依赖默认属性,则必须传递与设置Cookie时使用的完全相同的路径和域属性
Cookies.remove('name', { path: '', domain: '.yourdomain.com' });
注意:移除不存在的cookie不会抛出异常
关于命名冲突
如果存在可能存在命名冲突的cookie名,noConflict()方法将使我们可以使用我们需要的命名且保留原本冲突的名字。在一些第三方插件(例如,作为组件或SDK的一部分)上运行脚本时,这特别有用。
// Assign the js-cookie api to a different variable and restore the original "window.Cookies" var Cookies2 = Cookies.noConflict(); Cookies2.set('name', 'value');
JSON
js-cookie 提供了简易的JSON使用
当我们需要创建cookie时,我们可以使用Array或者Object,而不是只能使用String。当你使用Array或者Object后,可以通过JSON.stringify()来获取到对应的对象
Cookies.set('name', { foo: 'bar' });
当我们使用Cookies.get()读取cookie时,我们获取到的是一个String
Cookies.get('name'); // => '{"foo":"bar"}'
Cookies.get(); // => { name: '{"foo":"bar"}' }
当我们使用Cookie.getJSON()读取cookie是,会自动对String进行JSON.parse()操作
Cookies.getJSON('name'); // => { foo: 'bar' }
Cookies.getJSON(); // => { name: { foo: 'bar' } }
编码与解码
编码与解码符合RFC 6265。cookie的名称或cookie的值中不允许包含所有特殊字符。相应的会使用percent-encoding
和UTF-8进行编码
cookie名称或cookie值中唯一被允许使用的特殊是字符是%字符。是为了能将percent-encoding的字符转义为文字。
请注意,默认的编码/解码策略只能在js-cookie读/写cookie之间相互操作。要覆盖默认的编码/解码策略,您需要使用Converter。
注意:根据RFC 6265,如果您的Cookie太大或同一域中的Cookie太多,则它们可能会被删除,有关更多详细信息,请点击此处。
Cookie的属性
可以通过设置Cookies.defaults对象的属性来全局设置Cookie属性默认值,也可以通过Cookies.set(...)在最后一个参数中传递普通对象来为每次调用分别设置Cookie属性默认值。每次传递的属性会覆盖默认属性。
expires
定义何时删除cookie。值可以是Number,它将被解释为从创建日期Date实例开始算起的天数。如果省略,则该cookie成为会话cookie。
default
当用户关闭浏览器时,将删除Cookie
path
一个指示cookie可见的String路径。
Converters
读取
创建一个新的api实例,该实例将覆盖默认的decoding实例。
所有读取方法依赖于正确的decoding的执行(例如Cookies.get()和Cookies.get('name'))。调用这些方法的时候,都将首先运行cookie运行转换器。
返回的字符串将用作cookie值。
例如下方对于escaped例子的使用
document.cookie = 'escaped=%u5317'; document.cookie = 'default=%E5%8C%97'; var cookies = Cookies.withConverter(function (value, name) { if ( name === 'escaped' ) { return unescape(value); } }); cookies.get('escaped'); // 北 cookies.get('default'); // 北 cookies.get(); // { escaped: '北', default: '北' }
写入
创建一个覆盖默认encoding的api实例:
Cookies.withConverter({ read: function (value, name) { // Read converter }, write: function (value, name) { // Write converter } });
作者:LouisDrink
链接:https://www.jianshu.com/p/758b6eab59b4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
上一篇:微信h5页面禁止下拉方法
下一篇:响应式web设计之CSS3 Media Queries
- Linux文章
- PHP文章
- 随机文章
- Linux中的find(-atime...
- mysql的expire_logs_...
- PHP 扩展 libsodium s...
- Linux下利用find和cp实现筛...
- 使用mysqldump命令导出备份m...
- Linux系统如何设置开机自动运行脚...
- Linux上实现秒级执行的定时任务
- shell echo -e 颜色输出
- Linux下通过grep查找指定的进...
- 解决执行脚本报syntax erro...
发表评论
昵称: 验证码: