Javascript Cookie一个轻量级别的浏览器端cookie操作的库
Javascript Cookie一个轻量级别的浏览器端cookie操作的库
JavaScript 其它杂项
共1Star
详细介绍
Javascript Cookie
一个轻量级别的浏览器端cookie操作的库
- 没有任何依赖
- 支持自定义解码与转码
- 源码采用ES6语法书写
- 读取支持用JSON格式化
安装
直接下载
在这里下载,然后在html里面通过script标签引入
<script src="path/to/cookie.min.js"></script>
AMD CommonJs ES6
首先安装Cookie这个包
npm install cookie-javascript -S
然后在JavaScript文件里面引入
# CommonJs
const Cookie = require('cookie-javascript')
# ES6
import Cookie from 'cookie-javascript'
使用
创建或者覆盖
通过Cookie
的set
方法来创建或者覆盖一个cookie
创建一个新的cookie
Cookie.set('name', 'value')
你也可以设置一个对象或者数组当做值
Cookie.set('object', {a: 1, b: 3})
创建一个新的cookie,并且设置他的过期时间(expires
)或者 (max-age
),其中expires
有3种类型的值:1、Number
,2、String
,3、Date
其中Number
类型的值分为两种情况:① expires === Infinity
设置其永不过期;② expires
等于一个整数,这个整数是以天为单位的 而max-age
是以秒为单位的。如果同时设置了expires
和max-age
目前大多数浏览器以expires
为准 如果设置expires
为一个字符串,则其应该是一个绝对时间的字符串,比如Sat, 06 Jan 2018 16:19:38 GMT
如果是一个Date
类型,会将其转为UTC
时间
创建一个永不过期的cookie
Cookie.set('name', 'value', {expires: Infinity})
创建一个1天后过期的cookie
Cookie.set('name', 'value', {expires: 1})
你还可以通过设置max-age
来设置cookie
过期时间 创建一个一天后过期的cookie
Cookie.set('name', 'value', {maxAge: 24 * 60 * 60})
设置expires
为一个时间字符串或者Date
对象
Cookie.set('name', 'value', {expires: 'Sat, 06 Jan 2020 16:19:38 GMT'})
Cookie.set('name', 'value', {expires: new Date()})
当然你也可以在创建cookie
的时候设置其path
,domain
,secure
你只需要在创建的时候在第三个参数里面对应的字段以及值就可以了,其中secure
的值是一个boolean
创建一个只能在https
里面传输的,path
为/example
,domain
为example.com
(包括所有子域名)subdomain.example.com
,7天后过期的cookie
Cookie.set('name', 'value', {
expires: 7, // or maxAge: 7 * 24 * 60 * 60
path: '/example',
domain: 'example.com',
secure: true
})
读取
通过Cookie
的get
方法来读取一个或者所有可读cookie
Cookie.get('name') // => 'value'
你也可以传入第二个参数({json: true}
)来设置读取的值是否进行格式化,默认第二个参数为false
,所以读取出来的都是字符串
Cookie.get('object') // => '{a: 1, b: 3}'
Cookie.get('object', {json: true}) // {a: 1, b: 3}
如果读取的时候一个参数也不传入或者传入的是{json: false}
or {json: true}
则是读取所有可以读取(比如服务端设置了httpOnly: true
的浏览器端就读取不到)的cookie
组成的一个object
Cookie.get() // => {name: 'value', object: '{a: 1, b: 3}'}
Cookie.get({json: true}) // => {name: 'value', object: {a: 1, b: 3}}
删除
通过Cookie
的remove
方法来删除一个或者所有可删除cookie
Cookie.remove('name')
如果在设置cookie
的时候设置了path
删除的时候必须把path
带上
Cookie.set('test', 'test', {path: '/test'})
Cookie.remove('test') // 失败
Cookie.remove('test', {path: '/test'}) // 成功
如果删除的时候没有提供参数,则视为删除所有可以删除的cookie
Cookie.remove()
对外接口
这个也暴露的一个接口(withConverter
)来自定义自己的行为
这是一个例子在读取的时后拦截默认的读取操作
document.cookie = 'escaped=%u5317';
document.cookie = 'default=%E5%8C%97';
let cookie = Cookie.withConverter(function (name, value) {
if ( name === 'escaped' ) {
return unescape(value)
}
})
cookie.get('escaped') // 北
cookie.get('default') // 北
cookie.get() // { escaped: '北', default: '北' }
写入的时候也可以自定义
创建一个新的实例来覆盖默认的读取与写入操作
Cookie.withConverter({
read: function (name, value) {
// 覆盖默认读取方法
},
write: function (name, value) {
// 覆盖默认写入方法
}
})
参考
感谢https://github.com/js-cookie/js-cookie
License
-
1772 Star
-
0 Star
-
0 Star
-
69 Star
-
0 Star
-
24 Star
-
3128 Star