1.0.0 • Published 6 years ago

cookie-javascript v1.0.0

Weekly downloads
6
License
MIT
Repository
github
Last release
6 years ago

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'

使用

创建或者覆盖

通过Cookieset方法来创建或者覆盖一个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是以秒为单位的。如果同时设置了expiresmax-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的时候设置其pathdomainsecure 你只需要在创建的时候在第三个参数里面对应的字段以及值就可以了,其中secure的值是一个boolean

创建一个只能在https里面传输的,path/exampledomainexample.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
})

读取

通过Cookieget方法来读取一个或者所有可读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}}

删除

通过Cookieremove方法来删除一个或者所有可删除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

MIT