关于javascript:每天一个npm包-之-jscookie

6次阅读

共计 3874 个字符,预计需要花费 10 分钟才能阅读完成。

hello, 大家好,我是 前端学长 Joshua (公众号)
热心于做开源,写文章。
目标为帮忙在校大学生,刚入职场的小伙伴能够尽快搭建本人的前端学习体系。
如果你有 学习上的困惑 ,欢送关注我, 找我交换,我实时回复大家

每天一个 npm 包 之 js-cookie

个性介绍:

js-cookie 是一个上手简略,轻量的,解决 cookies 的库
有如下特点:

  1. 在所有浏览器是可用
  2. 容许所有的字符集
  3. 反对 ES6 模块化, AMD 和 CommonJs 模块化
  4. 合乎 RFC 6265
  5. 有 wiki
  6. 容许自定义编码、解码
  7. 小体积,小于 800 bytes

装置:

npm i js-cookie

上面间接介绍如何应用吧

const Cookies = require('js-cookie')

根底用法:

创立一个 cookie,在整个站点中无效:

Cookies.set('name', 'value')

创立一个 cookie,有效期为 7 天,在整个站点上无效:

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 属性之一(在设置相干 cookie 时可能已应用或未应用的述下)来读取特定 cookie

Cookies.get('foo', { domain: 'sub.example.com'}) // `domain` won't have any effect...!

值为 foo 的 cookie 只能通过 .get() 来读取,前提是这个 cookie 是容许你的代码读取的

通过指定 域和 / 或门路属性 来读取 cookie 是不会失效的

删除 cookie:

Cookies.remove('name')

删除一个对以后页面门路无效的 cookie:

Cookies.set('name', 'value', { path: ''})
Cookies.remove('name') // fail!, 须要指定 path 字段,如下行代码
Cookies.remove('name', { path: ''}) // removed!

重要!当删除 cookie 并且这个 cookie 你有指定一些属性时,您必须传递用于设置 cookie 的完全相同的门路和域属性

Cookies.remove('name', { path: '', domain:'.yourdomain.com'})

留神:删除不存在的 cookie 既不会引发任何异样,也不会返回任何值。

命名空间抵触:

如果存在与命名空间 Cookies 发生冲突的任何危险,noConflict 办法 将容许您定义一个新的命名空间, 同时你还能够保留并且持续应用原有的命名空间。

这个办法在第三方站点上运行脚本时特地有用,例如 作为小部件或 SDK 的一部分。

比方:在以后网站上,曾经有了一个“window.Cookies”, 那么咱们作为时第三方,就能够应用 Cookies.noConflict() 这个函数来为咱们的 js-cookie api 的应用 从新赋值另外一个变量名,这里就能够防止第三方和原有网站的命名抵触的状况

var Cookies2 = Cookies.noConflict()
Cookies2.set('name', 'value')

留神:应用 AMD 或 CommonJS 模块化标准时不须要 .noConflict 办法,因而它不会在这些环境中公开。

cookie 属性的设置:

能够通过 withAttributes() 创立 cookiesIns 的实例, 并且对设置 Cookie 属性全局默认值,
或是
通过将一般对象作为最初一个参数传递给 Cookies.set(...)。每次调用 Cookies.set(...) 时,属性会笼罩全局默认属性。

应用 withAttributes 设置全局默认项:

const cookiesIns = Cookies.withAttributes({path: '/', domain: '.example.com'})

expires

规定 cookie 何时生效,会被删除。

类型:数字,它的含意是,从 cookie 被创立时算起的天数或一个 Date 实例。如果省略,cookie 将成为会话 cookie。

要创立在不到一天内过期的 cookie,您能够查看 Wiki 上的常见问题解答。

默认值:是一个会话 cookie, 当用户敞开浏览器时 Cookie 就会被删除。

例子:

Cookies.set('name', 'value', { expires: 365})
Cookies.get('name') // => 'value'
Cookies.remove('name')

path

类型:字符串,规定 cookie 可见的门路。

默认值:/

例子:

Cookies.set('name', 'value', { path: ''})
Cookies.get('name') // => 'value'
Cookies.remove('name', { path: ''})

domain

类型:字符串,规定 cookie 可见的无效域(实际上就是域名)。该 cookie 也将对该域名下的所有子域可见。

默认值:Cookie 仅对创立 cookie 的页面的域或子域可见

例子:假如在 site.com 上创立了一个 cookie:

Cookies.set('name', 'value', { domain: 'subdomain.site.com'})
Cookies.get('name') // => undefined (须要在 'subdomain.site.com' 这个域名上来读取这个 cookie)

secure

类型:true 或 false,批示 cookie 传输是否须要平安协定 (https)

默认值:false, 无平安协定要求。

Cookies.set('name', 'value', { secure: true})
Cookies.get('name') // => 'value'
Cookies.remove('name')

sameSite

类型:字符串,容许管制浏览器是否与跨站点申请一起发送 cookie

默认值:未设置

例子:

Cookies.set('name', 'value', { sameSite: 'strict'})
Cookies.get('name') // => 'value'
Cookies.remove('name')

cookie 读写操作的转换器

read (读)

依据 api, 创立一个新的 Cookie 实例对象,在这个实例对象上,重写默认解码的函数实现。

在这个库中,所有的 get 函数,都是依赖于正确的解码函数而执行的,比方:Cookies.get() and Cookies.get('name'), 将会运行每个 cookie 给定的转换器, 返回值就是 cookie 的值。

例子:读取一个 cookie, 这个 cookie 只能通过 escape 函数 来进行解码

document.cookie = 'escaped=%u5317'
document.cookie = 'default=%E5%8C%97'

var cookies = Cookies.withConverter({read: function (value, name) {if (name === 'escaped') {return unescape(value)
    }
    // 对于所有其余的 cookie 都应用原来的解码形式
    return Cookies.converter.read(value, name)
  }
})
cookies.get('escaped') // 北
cookies.get('default') // 北
cookies.get() // { escaped: '北', default: '北'}

write (写)

依据 api, 创立一个新的 Cookie 实例对象,在这个实例对象上,重写默认编码的函数实现。

例子:

Cookies.withConverter({write: function (value, name) {return value.toUpperCase()
  }
})

Q&A

常见问题答复

如何将 cookie 的过期工夫设置为在一天之内呢?

js-cookie 的 expires 属性是反对一个 Data 实例对象的。
这提供了很大的灵活性,因为 Date 实例能够指定任何时刻。

例子:
假如 cookie 是要在 15 分钟之后过期

var inFifteenMinutes = new Date(new Date().getTime() + 15 * 60 * 1000);
Cookies.set('foo', 'bar', {expires: inFifteenMinutes});

你也能够设置 cookie 的无效工夫只有半天

var inHalfADay = 0.5;
Cookies.set('foo', 'bar', {expires: inHalfADay});

或者是 半个小时(30 分钟)

var in30Minutes = 1/48;
Cookies.set('foo', 'bar', {expires: in30Minutes});

动下小手

  • 欢送关注我的 GitHub:@huangyangquang ⭐⭐
  • 欢送关注我的公众号:前端学长 Joshua
    <img src=”http://qvf3q8r5e.hn-bkt.clouddn.com/wechatQrCode.jpg” width=”50%”>
正文完
 0