1. คำนำ
ก่อนหน้านี้มีการใช้คุกกี้ในรูปแบบของเอกสาร แม้ว่าความเข้ากันได้ดี แต่ก็ลำบาก ฉันเป็นคนที่ชอบทำล้อดังนั้นฉันจึงห่อหุ้มเครื่องมือสำหรับคุกกี้ เป็นเวลานานที่ฉันชอบเขียนโค้ด แต่ไม่ชอบสรุปข้อความมากนักและฉันไม่ชอบเขียนสิ่งที่แยกส่วน ดูเหมือนว่าฉันต้องเปลี่ยนมัน
2. ไอเดีย
(1) วิธีการห่อหุ้มและสิ่งที่จะห่อหุ้ม
วิธีการห่อหุ้ม: มันคือการใช้ JS ดั้งเดิมเพื่อห่อหุ้มมันลงในเครื่องมือเพื่อให้สามารถใช้งานได้ทุกที่ encapsulation กับ document.cookie เป็นวิธีที่ดีที่สุดในการทำและการดำเนินการทั้งหมดจะขึ้นอยู่กับ document.cookie
สิ่งที่ถูกห่อหุ้ม: ห่อหุ้มให้เป็นวัตถุและสามารถนำไปใช้งานได้โดยใช้วิธี Getter & Setter
(2) วิธีการห่อหุ้ม
get (), set (ชื่อ, ค่า, opts), ลบ (ชื่อ), clear (), getCookies () ฯลฯ ฉันคิดว่าการห่อหุ้มวิธีการมากมายนั้นเพียงพอที่จะใช้คุกกี้
3. การกระทำ
(1) เข้าใจคุกกี้ สาระสำคัญของคุกกี้คือคุกกี้ HTTP document.cookie เมื่อวัตถุที่แสดงโดยลูกค้าคือเอกสาร สำหรับข้อมูลเพิ่มเติมคุณสามารถอ่านรหัสและความคิดเห็นต่อไปนี้
(2) รหัสข้างต้น: รหัสเหล่านี้ควรใช้งานง่ายมากและสามารถบีบอัดพร้อมกับรหัสโครงการ ฉันคิดว่าความคิดเห็นที่จุดเริ่มต้นของสิ่งต่อไปนี้เป็นประเด็นสำคัญ
การคัดลอกรหัสมีดังนี้:
-
* คุกกี้ HTTP: ข้อมูลเซสชันร้านค้า
* ชื่อและค่าจะต้องถูกเข้ารหัส Rul เมื่อส่ง
* คุกกี้ถูกผูกไว้กับชื่อโดเมนที่ระบุ คุกกี้ไม่สามารถแชร์ได้หากไม่มีโดเมนนี้ แต่สามารถแบ่งปันคุกกี้ไปยังสถานีย่อยในไซต์หลัก
* คุกกี้มีข้อ จำกัด บางประการ: ตัวอย่างเช่น IE6 & IE6 จำกัด ถึง 20; IE7 50; Opera 30 ... ดังนั้นคุกกี้จึงมักจะถูกตั้งค่าตามข้อกำหนดของ [ต้อง]
* ชื่อของคุกกี้นั้นปราศจากกรณี ขอแนะนำให้เข้ารหัส URL คุกกี้ เส้นทางเป็นวิธีที่ดีในการแยกแยะคุกกี้ในสถานการณ์ที่แตกต่างกัน คุกกี้ที่มีธงรักษาความปลอดภัย
* ส่งไปยังเซิร์ฟเวอร์ในกรณี SSL แต่ HTTP จะไม่ ขอแนะนำให้ตั้งค่าการหมดอายุโดเมนและเส้นทางสำหรับคุกกี้ คุกกี้แต่ละตัวน้อยกว่า 4KB
-
// สำหรับการห่อหุ้มคุกกี้ให้ใช้วิธีการ getter และ setter เพื่อนำวิธีการ getter และ setter มาใช้
(ฟังก์ชั่น (ทั่วโลก) {
// รับวัตถุคุกกี้แสดงเป็นวัตถุ
ฟังก์ชั่น getCookiesObj () {
var cookies = {};
if (document.cookie) {
var objs = document.cookie.split (';');
สำหรับ (var i ใน objs) {
var index = objs [i] .indexof ('=')
NAME = OBJS [I] .SUBSTR (0, INDEX)
value = objs [i] .substr (ดัชนี + 1, objs [i] .length);
คุกกี้ [ชื่อ] = ค่า;
-
-
กลับมาคุกกี้;
-
// ตั้งค่าคุกกี้
ชุดฟังก์ชัน (ชื่อ, ค่า, opts) {
// opts maxage, path, โดเมน, ปลอดภัย
if (name && value) {
var cookie = encodeuricomponent (ชื่อ) + '=' + encodeuricomponent (ค่า);
// พารามิเตอร์เสริม
if (opts) {
if (opts.maxage) {
คุกกี้ += '; max-age = ' + opts.maxage;
-
ถ้า (opts.path) {
คุกกี้ += '; path = ' + opts.path;
-
ถ้า (opts.domain) {
คุกกี้ += '; domain = ' + opts.domain;
-
if (opts.secure) {
คุกกี้ += '; ปลอดภัย';
-
-
document.cookie = คุกกี้;
กลับมาคุกกี้;
}อื่น{
กลับ '';
-
-
// รับคุกกี้
ฟังก์ชั่นรับ (ชื่อ) {
ส่งคืน decodeuricomponent (getCookiesObj () [ชื่อ]) || โมฆะ;
-
// ล้างคุกกี้
ฟังก์ชั่นลบ (ชื่อ) {
if (getCookiesObj () [ชื่อ]) {
document.cookie = name + '=; Max-age = 0 ';
-
-
// ล้างคุกกี้ทั้งหมด
ฟังก์ชั่นชัดเจน () {
คุกกี้ var = getCookiesObj ();
สำหรับ (คีย์ var ในคุกกี้) {
document.cookie = key + '=; Max-age = 0 ';
-
-
// รับคุกกี้ทั้งหมด
ฟังก์ชั่น getCookies (ชื่อ) {
กลับ getCookiesObj ();
-
// แก้ไขความขัดแย้ง
ฟังก์ชั่น noconflict (ชื่อ) {
if (name && typeof name === 'String') {
if (name && window ['cookie']) {
หน้าต่าง [ชื่อ] = หน้าต่าง ['คุกกี้'];
ลบหน้าต่าง ['คุกกี้'];
กลับหน้าต่าง [ชื่อ];
-
}อื่น{
กลับหน้าต่าง ['คุกกี้'];
ลบหน้าต่าง ['คุกกี้'];
-
-
ทั่วโลก ['คุกกี้'] = {
'GetCookies': GetCookies,
'ตั้งค่า': ตั้ง,
'รับ': รับ,
'ลบ': ลบออก
'ชัดเจน': ชัดเจน
'noconflict': noconflict
-
})(หน้าต่าง);
(3) ตัวอย่าง
การคัดลอกรหัสมีดังนี้:
<! doctype html>
<html>
<head>
<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 ('ชื่อ', 'wlh'));
console.log ('---------------------------------------------------------------);
console.log (cookie.set ('ชื่อ', 'wlh123'));
console.log ('--------------------------------------------------------------------);
console.log (cookie.set ('อายุ', 20));
console.log ('------------------------------------------------------);
console.log (cookie.get ('ชื่อ'));
console.log ('----------------------------------------------------------------);
console.log (cookie.getCookies ());
console.log ('---------------------------------------------------------------);
console.log (cookie.remove ('อายุ'));
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 ());
</script>
</body>
</html>
(4) ที่อยู่รหัส: https://github.com/vczero/cookie