- PVSM.RU - https://www.pvsm.ru -

Библиотека для работы с cookies (tasty-cookies)

История старая, я так думаю, все помнят window.cookie = '...' (а может кто этим пользуется), жутко неудобная штука.

Приведу пример на нативном js:

// Добавление печенья
function setCookie(key, value) {
  window.cookie = key + '=' + encodeURIComponent(JSON.stringify(value));
}

// Получение печенья
function getCookie(key) {
  var matches = document.cookie.match(new RegExp(
    '(?:^|; )' + key.replace(/([.$?*|{}()[]\/+^])/g, '\$1') + '=([^;]*)'
  ));
  return JSON.parse(decodeURIComponent(matches[1]));
}

// Добавляем строку
setCookie('string', 'Моя строка');
// Добавляю объект
setCookie('object', {a: 1, b: 2});

// Получаю объект
var object = getCookie('object');


Давным-давно в закаулках сети я нашёл такую замечательнуюи вещь как jQuery cookie [1], но со временем я стал осознавать, что одного метода мне уже не хватает для удобной работы с печеньем.

Тот же пример с jQuery cookie:

// Добавляем строку
$.cookie('string', 'Моя строка');
// Добавляю объект
$.cookie('object', {a: 1, b: 2});

// Получаю объект
var object = $.cookie('object');

Совсем не давно я стал знакомиться с angular, и как не странно у них тоже своя реализация cookies [2], не много лучше, но мне она кажется немного «странной», «мудрёной». Методы putObject, getObject — вообще ужас, и зачем они?

И опять пример:

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
  // Добавляем строку
  $cookies.put('string', 'Моя строка');
  // Добавляю объект
  $cookies.putObject('object', {a: 1, b: 2});

  // Получаю объект
  var object = $cookies.getObject('object');
}]);

Мне надоело это разнообразие красок, хотелось бы чего нибудь одного такого теплого, уютного что бы выполняло самые простые вещи и давало отличные инструменты для работы с cookie. Я ушёл глубоко в поиск и к моему удивлению я не чего подходящего мне не нашёл, в не которые библиотеках не хватало методов, в других методов достаточно но они странные для меня. Может я слишком придирчив?

На почве этого всего я решил изобрести свой велосипед с максимально круглыми колёсами и удобным сидением. Мне кажется это правильно. Работа затянулась на несколько суток, в общем вот что получилось сама библиотека tasty-cookies [3] ну и русская документация [4].

Пример работы tasty-cookies:

Cookie.set({
  // Добавляем строку
  string: 'Моя строка',
  // Добавляю объект
  object: {a: 1, b: 2}
});

// Получаю объект
var object = Cookie.get('object');

Она использует объект JSON поэтому если надо поддержка старых браузеров можно подтянуть грабли типо JSON 3 [5], хотя, о чем это я?

Хотелось бы услышать критики, оценки работы, ну и само собой предложений по улучшению библиотеки.

Автор: Alex5646

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/117083

Ссылки в тексте:

[1] jQuery cookie: https://github.com/carhartl/jquery-cookie

[2] cookies: https://docs.angularjs.org/api/ngCookies/service/$cookies

[3] tasty-cookies: https://github.com/Alex5646/cookie.js

[4] русская документация: https://github.com/Alex5646/cookie.js/blob/master/README.ru.md

[5] JSON 3: https://bestiejs.github.io/json3/

[6] Источник: https://habrahabr.ru/post/280998/