1. Prefacio
Antes, las cookies se usaban en forma de document.cookies. Aunque la compatibilidad es buena, es problemática. Soy una persona que prefiere hacer ruedas, por lo que encapsula una herramienta para las galletas. Durante mucho tiempo, me gusta escribir código, pero no es muy parecido a resumir los textos, ni me gusta escribir algunas cosas fragmentarias. Parece que tengo que cambiarlo.
2. Ideas
(1) Cómo encapsular y qué encapsular
Cómo encapsular: es usar JS nativo para encapsularlo en una herramienta, para que pueda usarse en cualquier lugar. La encapsulación contra document.cookie es la mejor manera de hacerlo, y todas las operaciones se basan en document.cookie.
Lo que está encapsulado: encapsulado para existir como objeto y se puede implementar utilizando el método Getter & Setter.
(2) Qué métodos de encapsulación
get (), set (nombre, valor, opción), eliminar (nombre), clear (), getcookies (), etc. Personalmente creo que encapsular tantos métodos es suficiente para usar cookies.
3. Acción
(1) Comprender las cookies. La esencia de las cookies son las galletas HTTP. Document.cookie cuando el objeto representado por el cliente es documento. Para obtener más información, puede leer el siguiente código y comentar
(2) El código anterior: estos códigos deben ser muy intuitivos y se pueden comprimir junto con el código del proyecto. Creo que los comentarios al comienzo de los siguientes son los puntos clave.
La copia del código es la siguiente:
/*
* Cookies HTTP: almacenar información de la sesión
* El nombre y el valor deben estar codificados al transmitir
* La cookie está vinculada al nombre de dominio especificado. Las cookies no se pueden compartir sin este dominio, pero pueden compartir cookies con subestaciones en el sitio principal.
* Las cookies tienen algunas restricciones: por ejemplo, IE6 e IE6-Limited a 20; IE7 50; Opera 30 ... por lo que las cookies generalmente se establecen de acuerdo con los requisitos de [MIR]
* El nombre de la cookie está libre de casos; También se recomienda codificar la URL de las cookies; El camino es una buena forma de distinguir las cookies en diferentes situaciones; la cookie con la bandera de seguridad
* Enviar al servidor en el caso SSL, pero HTTP no lo hará. Se recomienda establecer expiras, dominio y ruta para cookies; Cada cookie es inferior a 4KB.
* */
// Para la encapsulación de cookies, use métodos de Getter y Setter para adoptar métodos de Getter y Setter
(función (global) {
// Obtener el objeto de cookie, expresado como un objeto
function getcookiesObj () {
var cookies = {};
if (document.cookie) {
var objs = document.cookie.split (';');
para (var i en objs) {
Var index = objs [i] .indexof ('='),
nombre = objs [i] .substr (0, índice),
valor = objs [i] .substr (índice + 1, objs [i] .length);
Cookies [nombre] = valor;
}
}
Cookies de regreso;
}
// establecer cookies
set de funciones (nombre, valor, opción) {
// opta Maxage, ruta, dominio, seguro
if (name && value) {
var cookie = encodeuricOponent (nombre) + '=' + encodeuricomponent (valor);
// Parámetros opcionales
if (opts) {
if (opts.maxage) {
Cookie += '; max-edad = ' + opts.maxage;
}
if (opts.path) {
Cookie += '; ruta = ' + opts.path;
}
if (opts.domain) {
Cookie += '; dominio = ' + opts.domain;
}
if (opts.secure) {
Cookie += '; seguro';
}
}
document.cookie = cookie;
Cookie de regreso;
}demás{
devolver '';
}
}
// consigue galletas
función get (nombre) {
return DecodeuricOponent (getCookiesObj () [nombre]) || nulo;
}
// despejar una galleta
función eliminar (nombre) {
if (getcookiesobj () [nombre]) {
document.cookie = name + '=; max-edad = 0 ';
}
}
// Borrar todas las cookies
función clear () {
var cookies = getcookiesObj ();
para (clave var en cookies) {
document.cookie = key + '=; max-edad = 0 ';
}
}
// consigue todas las galletas
function getcookies (nombre) {
return getcookiesobj ();
}
// Resolver conflicto
function noconflict (nombre) {
if (name && typeof name === 'string') {
if (name && window ['cookie']) {
ventana [nombre] = ventana ['cookie'];
Eliminar ventana ['cookie'];
Ventana de retorno [nombre];
}
}demás{
Ventana de retorno ['Cookie'];
Eliminar ventana ['cookie'];
}
}
Global ['Cookie'] = {
'Getcookies': Getcookies,
'set': set,
'Get': Get,
'Eliminar': eliminar,
'claro': claro,
'noconflict': noconflict
};
})(ventana);
(3) Ejemplo
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<meta charset = "utf-8">
<title> Ejemplo de cookie </title>
</ablo>
<Body>
<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 ('nombre', 'wlh'));
console.log ('-----------------------------------------------------------------------);
console.log (cookie.set ('nombre', 'wlh123'));
console.log ('----------------------------------------------------------------------------);
console.log (cookie.set ('edad', 20));
console.log ('----------------------------------------------------------);
console.log (cookie.get ('nombre'));
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('-----------------------------------------------------------------------);
console.log (cookie.remove ('edad'));
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('------------------------------------------------------------------------);
console.log (cookie.clear ());
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('------------------------------------------------------------------------);
var $ cookie = cookie.noconflict (verdadero /*un nuevo nombre de cookie* /);
console.log ($ cookie);
console.log ('-----------------------------------------------------------------);
console.log ($ cookie.getcookies ());
</script>
</body>
</html>
(4) Dirección del código: https://github.com/vczero/cookie