1. 서문
이전에는 쿠키가 Document.Cookies 형태로 사용되었습니다. 호환성이 좋지만 번거 롭습니다. 나는 바퀴를 만드는 것을 선호하는 사람이므로 쿠키를위한 도구를 캡슐화합니다. 오랫동안, 나는 코드를 작성하는 것을 좋아하지만 텍스트를 요약하는 것을 좋아하지 않으며, 단편적인 것을 쓰고 싶지도 않습니다. 변경 해야하는 것 같습니다.
2. 아이디어
(1) 캡슐화 방법 및 캡슐화 방법
캡슐화 방법 : 기본 J를 사용하여 도구로 캡슐화하여 어디서나 사용할 수 있도록하는 것입니다. 문서에 대한 캡슐화는이를 수행하는 가장 좋은 방법이며 모든 작업은 Document.Cookie를 기반으로합니다.
캡슐화 된 것 : 객체로 존재하도록 캡슐화되고 Getter & Setter 메소드를 사용하여 구현할 수 있습니다.
(2) 어떤 캡슐화 방법
get (), set (이름, 값, opts), 제거 (이름), clear (), getCookies () 등. 나는 개인적으로 많은 방법을 캡슐화하는 데 쿠키를 사용하기에 충분하다고 생각합니다.
3. 행동
(1) 쿠키를 이해합니다. 쿠키의 본질은 HTTP 쿠키입니다. COOKIE 클라이언트가 표시 한 객체가 문서 일 때. 자세한 내용은 다음 코드 및 댓글을 읽을 수 있습니다.
(2) 위의 코드 :이 코드는 매우 직관적이어야하며 프로젝트 코드와 함께 압축 할 수 있습니다. 다음의 시작 부분의 의견이 핵심 요점이라고 생각합니다.
코드 사본은 다음과 같습니다.
/*
* HTTP 쿠키 : 세션 정보를 저장합니다
* 전송시 이름과 값은 규칙을 인코딩해야합니다.
* 쿠키는 지정된 도메인 이름에 바인딩됩니다. 이 도메인 없이는 쿠키를 공유 할 수 없지만 기본 사이트의 변전소에 쿠키를 공유 할 수 있습니다.
* 쿠키는 몇 가지 제한 사항이 있습니다 : 예를 들어, IE6 & IE6- 20까지의 제한; IE7 50; 오페라 30 ... 따라서 쿠키는 일반적으로 [필수]의 요구 사항에 따라 설정됩니다.
* 쿠키의 이름은 사안이 없습니다. 쿠키 URL을 인코딩하는 것이 좋습니다. 경로는 다른 상황에서 쿠키를 구별하는 좋은 방법입니다. 보안 플래그가있는 쿠키
* SSL 케이스에서 서버로 보내지 만 HTTP는 그렇지 않습니다. 쿠키의 만료, 도메인 및 경로를 설정하는 것이 좋습니다. 각 쿠키는 4KB 미만입니다.
* */
// 쿠키 캡슐화의 경우 Getter 및 Setter 메소드를 사용하여 Getter 및 Setter 방법을 채택하십시오.
(기능 (글로벌) {
// 객체로 표현 된 쿠키 객체를 가져옵니다
함수 getCookiesObj () {
var 쿠키 = {};
if (document.cookie) {
var objs = document.cookie.split ( ';');
for (var i in objs) {
var index = objs [i] .indexof ( '='),
name = objs [i] .substr (0, index),
value = objs [i] .substr (index + 1, objs [i] .length);
쿠키 [이름] = 값;
}
}
반환 쿠키;
}
// 쿠키를 설정합니다
함수 세트 (이름, 값, opts) {
// Maxage, Path, Domain, Secure를 선택합니다
if (name && value) {
var 쿠키 = EncodeUricomponent (name) + '=' + encodeUricomponent (value);
// 선택적 매개 변수
if (opts) {
if (opts.maxage) {
쿠키 += '; max-age = ' + opts.maxage;
}
if (opts.path) {
쿠키 += '; 경로 = ' + opts.path;
}
if (opts.domain) {
쿠키 += '; 도메인 = ' + opts.domain;
}
if (opts.secure) {
쿠키 += '; 안전한';
}
}
document.cookie = 쿠키;
쿠키 반환;
}또 다른{
반품 '';
}
}
// 쿠키를 얻습니다
함수 get (이름) {
return decodeUricomponent (getCookiesObj () [이름]) || 널;
}
// 쿠키를 지 웁니다
함수 제거 (이름) {
if (getCookiesObj () [이름]) {
document.cookie = name + '=; MAX-AGE = 0 ';
}
}
// 모든 쿠키를 지 웁니다
function clear () {
var 쿠키 = getCookiesObj ();
for (쿠키의 var 키) {
document.cookie = key + '=; MAX-AGE = 0 ';
}
}
// 모든 쿠키를 얻습니다
함수 getCookies (이름) {
return getCookiesObj ();
}
// 충돌 해결
함수 noconflict (이름) {
if (name && typeof name === 'string') {
if (name && 창 [ '쿠키']) {
창 [이름] = 창 [ '쿠키'];
삭제 창 [ '쿠키'];
반환 창 [이름];
}
}또 다른{
반환 창 [ '쿠키'];
삭제 창 [ '쿠키'];
}
}
글로벌 [ '쿠키'] = {
'GetCookies': GetCookies,
'set': set,
'get': 얻기,
'제거': 제거하고
'Clear': Clear,
'noconflict': noconflict
};
})(창문);
(3) 예
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<meta charset = "utf-8">
<title> 쿠키 예 </title>
</head>
<body>
<script type = "text/javaScript"src = "cookie.js">/script>
<script type = "text/javaScript">
Console.Log ( '-------------------------------------------------------------------------------------------------------------------------------------------
Console.log (쿠키);
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 (쿠키 세트 ( 'Age', 20));
Console.log ( '-------------------------------------------------------------------------------------------------------------------------------------------------------------------.
console.log (coopie.get ( 'name'));
Console.log ( '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
console.log (cookie.getCookies ());
Console.log ( '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
console.log (쿠키 .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 /*쿠키의 새 이름* /);
Console.log ($ 쿠키);
Console.log ( '-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Console.log ($ cookie.getCookies ());
</스크립트>
</body>
</html>
(4) 코드 주소 : https://github.com/vczero/cookie