KorniloFF-ScriptS ©

Здравствуйте, Гость!
Page
Menu

Работа с cookies

Известно, что нативные методы работы с cookies-файлами в javascript настолько несовершенны, что каждому фронт-эндеру приходится либо писать свой хелпер, либо сильно удлинять код.

Удивительно, но даже в таком монстре, как jQuery, используемом во многих проектах, в базовой комплектации нет инструмента для работы с кукисами. Есть аддон, позволяющий это делать, однако было бы не разумно подключать Квери + аддон только для этой цели.

Для проектов на нативном коде, либо использующих другие фреймворки, я бы рекомендовал маленькую, но довольно мощную либу, успешно справляющуюся с такими задачами: cookies.js. Её размер не превышает 1 кБ!

Библиотека создаёт единственную функцию cookies, которую можно использовать довольно разнообразно. Функция может принимать 1 или 2 параметра. Любой из параметров должен быть объектом javascript. Во всех случаях функция возвращает ссылку на саму себя.

Краткое API

Подключение

Либо скачать на Гите по ссылке выше и подключать локально.

Запись в cookies

Использование двух параметров

Оба параметра должны быть объектами. В первом объекте указываются пары ключ : значение, во втором - указания по их размещению.


cookies({ cookieKey: 'value' }, {
	// Все параметры опциональны
  expires: 10 * 24 * 3600,     // время жизни в секундах
  domain: false,                // домен
  path: '/',                    // путь к странице
  secure: https ? true : false  // передача по https
});

Для записи кукисов с дефолтными настройками можно использовать сокращённый вариант - с передачей только первого параметра в функцию.

Использование одного параметра


cookies({ cookieKey: 'value' });
cookies({ 
	cookieKey1: 'value1',
	cookieKey2: 'value2',
	// etc...
});

Глобальные настройки

При необходимости изменения дефолтных глобальных настроек - это просто сделать следующим образом:


// Указаны значения по умолчанию

cookies.expires = 10 * 24 * 3600; 
cookies.domain = false;
cookies.path = '/';
cookies.secure = https ? true : false;  

Дополнительные настройки


// Указаны значения по умолчанию

cookies.nulltoremove = true;
cookies.autojson = true;
cookies.autoencode = true;
cookies.encode = function(str){ return encodeURIComponent(str); };
cookies.decode = function(str){ return decodeURIComponent(str); };

После этого функция cookies с 1 параметром будет использовать заданные настройки при каждом вызове.

Запись в виде JSON

На мой взгляд, одной из полезнейших возможностей является запись нескольких значений в единый cookie в формате JSON.


cookies({singleCookie : { 
	cookieKey1: 'value1',
	cookieKey2: 'value2',
	// etc...
}});
// Object { cookieKey1: "value1", cookieKey2: "value2" }

Таким образом все значения запишутся в singleCookie.

Чтение cookies


var cook = cookies('cookieKey');

Благодаря тому, что функция возвращает ссылку на саму себя, можно сделать трюк с одновременной записью и чтением куки в одном выражении.


var cook = cookies({cookieKey:'value'})('cookieKey');

Или даже так:


var cook = cookies({key1:'value1'})({key2:'value2'})('key1');

При этом, если в кукис был сохранён JSON, при чтении вернётся объект. Остальные данные также будут соответствовать своим типам.

Удаление cookies

Удаление кукиса возможно двумя способами.


cookies({ cookieKey: null }); // если не изменена глобальная настройка cookies.nulltoremove = true;
cookies({ cookieKey: 'value' }, { expires: -1 });
Комментарии к теме ( 0 )

Комментариев пока нет.

Дабавить комментарий