1. Prefácio
Antes, os cookies eram usados na forma de document.cookies. Embora a compatibilidade seja boa, é problemático. Eu sou uma pessoa que prefere fazer rodas, então encapsula uma ferramenta para cookies. Por um longo tempo, gosto de escrever código, mas não muito gosto de resumir textos, nem gosto de escrever algumas coisas fragmentárias. Parece que eu tenho que mudar isso.
2. Ideias
(1) Como encapsular e o que encapsular
Como encapsular: é usar JS nativo para encapsulá -lo em uma ferramenta, para que possa ser usada em qualquer lugar. O encapsulamento contra document.cookie é a melhor maneira de fazê -lo, e todas as operações são baseadas no document.cookie.
O que é encapsulado: encapsulado para existir como objeto e pode ser implementado usando o método Getter & Setter.
(2) Quais métodos de encapsulamento
get (), set (nome, valor, opts), remover (nome), clear (), getCookies (), etc. Pessoalmente, acho que o encapsulação de tantos métodos é suficiente para usar cookies.
3. Ação
(1) Entenda os cookies. A essência dos cookies são os biscoitos HTTP. Document.cookie quando o objeto representado pelo cliente é o documento. Para mais informações, você pode ler o seguinte código e comentar
(2) O código acima: esses códigos devem ser muito intuitivos e podem ser compactados juntamente com o código do projeto. Eu acho que os comentários no início dos seguintes são os principais pontos.
A cópia do código é a seguinte:
/*
* Cookies HTTP: Informações da sessão da loja
* Nome e valor devem ser codificados ao regulamento ao transmitir
* O cookie está ligado ao nome de domínio especificado. Os cookies não podem ser compartilhados sem esse domínio, mas podem compartilhar cookies em subestações no site principal.
* Os cookies têm algumas restrições: por exemplo, IE6 e IE6 limitadas para 20; IE7 50; Opera 30 ... então os cookies geralmente são definidos de acordo com os requisitos de [obrigatório]
* O nome do cookie é livre de maiúsculas; Também é recomendável codificar o URL do cookie; O caminho é uma boa maneira de distinguir cookies em diferentes situações; O biscoito com a bandeira de segurança
* Enviar para o servidor no caso SSL, mas o HTTP não o fará. Recomenda -se definir expira, domínio e caminho para cookies; Cada cookie é menor que 4KB.
* */
// Para o encapsulamento de cookies, use métodos Getter e Setter para adotar métodos getter e setter
(função (global) {
// Obtenha o objeto de cookie, expresso como um objeto
função getCookieSobj () {
var cookies = {};
if (document.cookie) {
var objs = document.cookie.split (';');
para (var i em objs) {
var index = objs [i] .IndexOf ('='),
nome = objs [i] .substr (0, índice),
valor = objs [i] .substr (índice + 1, objs [i] .Length);
Cookies [nome] = valor;
}
}
devolver cookies;
}
// Defina cookies
conjunto de funções (nome, valor, opts) {
// opta maxage, caminho, domínio, seguro
if (nome && value) {
var cookie = codeuricomponent (nome) + '=' + codeuricomponent (valor);
// parâmetros opcionais
if (opts) {
if (opts.maxage) {
Cookie += '; max-Arage = ' + opts.maxage;
}
if (opts.Path) {
Cookie += '; caminho = ' + opts.Path;
}
if (opts.Domain) {
Cookie += '; domain = ' + opts.Domain;
}
if (opts.secure) {
Cookie += '; seguro';
}
}
document.cookie = cookie;
Retornar Cookie;
}outro{
retornar '';
}
}
// Obtenha cookies
função get (nome) {
Retornar decodeuricomponent (getCookieSobj () [nome]) || nulo;
}
// Limpe um biscoito
função remover (nome) {
if (getCookieSobj () [nome]) {
document.cookie = nome + '=; max-AGE = 0 ';
}
}
// Limpe todos os cookies
function clear () {
var cookies = getCookieSobj ();
para (tecla var em cookies) {
document.cookie = chave + '=; max-AGE = 0 ';
}
}
// Obtenha todos os cookies
função getcookies (nome) {
return getCookieSobj ();
}
// Resolva conflito
função noconflict (nome) {
if (nome && typeof name === 'string') {
if (name && window ['cookie']) {
janela [nome] = janela ['cookie'];
excluir janela ['cookie'];
Janela de retorno [nome];
}
}outro{
Janela de retorno ['Cookie'];
excluir janela ['cookie'];
}
}
global ['cookie'] = {
'getcookies': getcookies,
'Set': Set,
'Get': pegue,
'Remover': Remover,
'claro': claro,
'Noconflict': Noconflict
};
})(janela);
(3) Exemplo
A cópia do código é a seguinte:
<! Doctype html>
<html>
<head>
<meta charset = "utf-8">
Exemplo de biscoito </title>
</head>
<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 ('nome', 'wlh'));
console.log ('---------------------------------------------------------------------);
console.log (cookie.set ('nome', 'wlh123'));
console.log ('----------------------------------------------------------------------------);
console.log (cookie.set ('idade', 20));
console.log ('----------------------------------------------------------);
console.log (cookie.get ('nome'));
console.log ('--------------------------------------------------------------------);
console.log (cookie.getcookies ());
console.log ('---------------------------------------------------------------------);
console.log (cookie.remove ('idade'));
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 /*um novo nome de cookie* /);
console.log ($ cookie);
console.log ('-------------------------------------------------------------------);
console.log ($ cookie.getcookies ());
</script>
</body>
</html>
(4) Endereço do código: https://github.com/vczero/cookie