1. Предисловие
Раньше куки использовались в виде документа. Кукии. Хотя совместимость хороша, это хлопотно. Я человек, который предпочитает делать колеса, поэтому я инкапсулирую инструмент для файлов cookie. В течение долгого времени мне нравится писать код, но не очень хотел бы суммировать тексты, и мне не нравится писать некоторые фрагментарные вещи. Кажется, я должен это изменить.
2. Идеи
(1) Как инкапсулировать и что инкапсулировать
Как инкапсулировать: он должен использовать нативные JS, чтобы инкапсулировать его в инструмент, чтобы его можно было использовать где угодно. Инкапсуляция против Document.cookie - лучший способ сделать это, и все операции основаны на Document.cookie.
Что инкапсулировано: инкапсулирован для существования в качестве объекта, и может быть реализовано с помощью метода Getter & Setter.
(2) Какие методы инкапсуляции
get (), set (name, value, opts), удалить (имя), clear (), getCookies () и т. Д. Я лично думаю, что инкапсулирование так много методов достаточно для использования файлов cookie.
3. Действие
(1) понять файлы cookie. Суть печенья - http cookie. Document.cookie Когда объект, представленный клиентом, является документом. Для получения дополнительной информации вы можете прочитать следующий код и комментарий
(2) Приведенный выше код: эти коды должны быть очень интуитивно понятными и могут быть сжаты вместе с кодом проекта. Я думаю, что комментарии в начале следующего - ключевые моменты.
Кода -копия выглядит следующим образом:
/*
* Http cookie: информация о сеансе магазина
* Имя и значение должны быть закодированы RUL при передаче
* Cookie связано с указанным доменным именем. Файлы cookie не могут быть разделены без этого домена, но они могут поделиться файлами cookie на подстанции на основном сайте.
* Cookie имеют некоторые ограничения: например, IE6 и IE6, ограниченные до 20; IE7 50; Opera 30 ... поэтому файлы cookie обычно устанавливаются в соответствии с требованиями [должны]
* Название cookie без корпуса; Также рекомендуется кодировать URL -адрес cookie; Путь - хороший способ отличить печенье в разных ситуациях; cookie с флагом безопасности
* Отправить на сервер в случае SSL, но HTTP не будет. Рекомендуется установить истечение, домен и путь для файлов cookie; Каждое печенье меньше 4 КБ.
* */
// Для инкапсуляции файлов cookie используйте методы Getter и Setter для принятия методов Getter и Setter
(function (Global) {
// Получить объект cookie, выраженный как объект
function getCookiesObj () {
var cookies = {};
if (document.cookie) {
var objs = document.cookie.split (';');
для (var i in objs) {
var index = objs [i] .indexof ('='),
name = objs [i] .substr (0, index),
value = objs [i] .substr (index + 1, objs [i] .length);
файлы cookie [name] = value;
}
}
вернуть печенье;
}
// установить файлы cookie
набор функций (имя, значение, Opts) {
// выбирает максимаж, путь, домен, безопасность
if (name && value) {
var cookie = encodeuricomponent (name) + '=' + encodeuricomponent (значение);
// Дополнительные параметры
if (Opts) {
if (opts.maxage) {
cookie += '; max-age = ' + opts.maxage;
}
if (opts.path) {
cookie += '; path = ' + opts.path;
}
if (opts.domain) {
cookie += '; domain = ' + opts.domain;
}
if (opts.secure) {
cookie += '; безопасный';
}
}
document.cookie = cookie;
вернуть cookie;
}еще{
возвращаться '';
}
}
// Получить файлы cookie
функция получить (имя) {
вернуть декодеурикупонент (getCookiesObj () [name]) || нулевой;
}
// очистить печенье
функция удалить (имя) {
if (getCookiesObj () [name]) {
document.cookie = name + '=; max-age = 0 ';
}
}
// очистить все куки
функция clear () {
var cookies = getCookiesObj ();
для (var -ключ в файлах cookie) {
document.cookie = key + '=; max-age = 0 ';
}
}
// Получить все печенье
функция getCookies (имя) {
вернуть getCookiesObj ();
}
// Установить конфликт
Функция noconflict (имя) {
if (name && typeof name === 'string') {
if (name && window ['cookie']) {
Window [name] = window ['cookie'];
Удалить окно ['cookie'];
вернуть окно [имя];
}
}еще{
вернуть окно ['cookie'];
Удалить окно ['cookie'];
}
}
Global ['cookie'] = {
«GetCookies»: GetCookies,
'set': set,
'Get': Get,
'удалить': удалить,
«ясно»: ясно,
«Noconflict»: Noconflict
};
})(окно);
(3) Пример
Кода -копия выглядит следующим образом:
<! Doctype html>
<html>
<голова>
<meta charset = "utf-8">
<название> пример cookie </title>
</head>
<тело>
<script type = "text/javascript" src = "cookie.js">/script>
<script type = "text/javascript">
console.log ('---------------------------------------------------------);
console.log (cookie);
Console.log ('------------------------------------------------------------------------------------------------------------------------------------------------------------------
console.log (cookie.getcookies ());
console.log ('--------------------------------------------------------------);
console.log (cookie.set ('name', 'wlh'));
console.log ('-----------------------------------------------------------------------);
console.log (cookie.set ('name', 'wlh123'));
Console.log ('----------------------------------------------------------------------------);
console.log (cookie.set ('Age', 20));
console.log ('-----------------------------------------------------------);
console.log (cookie.get ('name'));
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('-----------------------------------------------------------------------);
console.log (cookie.remove ('age'));
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('-------------------------------------------------------------------------);
console.log (cookie.clear ());
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('-------------------------------------------------------------------------);
var $ cookie = cookie.noconflict (true /*новое имя cookie* /);
Console.log ($ cookie);
console.log ('-----------------------------------------------------------------);
console.log ($ cookie.getcookies ());
</script>
</body>
</html>
(4) Кодовый адрес: https://github.com/vczero/cookie