ES7, используя регулярное выражение для get ().На основе MDN
const Cookie =
{ get: name => {
let c = document.cookie.match(`(?:(?:^|.*; *)${name} *= *([^;]*).*$)|^.*$`)[1]
if (c) return decodeURIComponent(c)
}
, set: (name, value, opts = {}) => {
if (opts.days) {
opts['max-age'] = opts.days * 60 * 60 * 24;
delete opts.days
}
opts = Object.entries(opts).reduce((str, [k, v]) => `${str}; ${k}=${v}`, '')
document.cookie = name + '=' + encodeURIComponent(value) + opts
}
, delete: (name, opts) => Cookie.set(name, '', {'max-age': -1, ...opts})
// path & domain must match cookie being deleted
}
Cookie.set('user', 'Jim', {path: '/', days: 10})
// Set the path to top level (instead of page) and expiration to 10 days (instead of session)
Использование - Cookie.get (имя, значение [, параметры]):
параметры поддерживает все стандартные параметры файлов cookie и добавляет"days":
- path : '/' - любой абсолютный путь. По умолчанию : текущее местоположение документа,
- домен : 'sub.example.com' - не может начинаться с точки. По умолчанию : текущий хост без субдомена.
- secure : true - обслуживать куки только через https. По умолчанию : false.
- days : 2 - дни до истечения срока действия cookie. По умолчанию : Конец сеанса.
Альтернативные способы истечения срока действия: - истекает : 'Sun, 18 Feb 2018 16:23:42 GMT' - датаистечения срока действия в виде строки GMT.
Текущую дату можно получить с помощью: new Date (Date.now ()). toUTCString () - 'max-age' : 30 -то же самое, что и дни, но в секундах, а не в днях.
В других ответах используется «expires» вместо «max-age» для поддержки более старых версий IE.Для этого метода требуется ES7, поэтому IE7 в любом случае отсутствует (это не имеет большого значения).
Примечание. Смешные символы, такие как "=" и "{:}", поддерживаются в качестве значений cookie, а регулярные выражения обрабатываютсяначальные и конечные пробелы (из других библиотек).
Если вы хотите хранить объекты, либо закодируйте их до и после с помощью и JSON.stringify и JSON.parse, отредактируйте вышеприведенное или добавьте другой метод.Например:
Cookie.getJSON = name => JSON.parse(Cookie.get(name))
Cookie.setJSON = (name, value, opts) => Cookie.set(name, JSON.stringify(value), opts);