1. مقدمة
من قبل ، تم استخدام ملفات تعريف الارتباط في شكل document.cookies. على الرغم من أن التوافق جيد ، إلا أنه مزعج. أنا شخص يفضل إنشاء عجلات ، لذلك أقوم بتغليف أداة لملفات تعريف الارتباط. لفترة طويلة ، أود أن أكتب رمزًا ، ولكن ليس من أرغب في تلخيص النصوص ، ولا أحب أن أكتب بعض الأشياء المجزأة. يبدو أنني يجب أن أغيره.
2. الأفكار
(1) كيفية التغليف وماذا تتغلف
كيفية التغليف: هو استخدام JS الأصلي لتغليفه في أداة ، بحيث يمكن استخدامه في أي مكان. التغليف ضد document.cookie هو أفضل طريقة للقيام بذلك ، وتستند جميع العمليات إلى document.cookie.
ما هو مغلف: مغلف للوجود ككائن ، ويمكن تنفيذه باستخدام طريقة getter & setter.
(2) ما هي طرق التغليف
Get () ، set (name ، value ، opts) ، remove (name) ، clear () ، getCookies () ، إلخ. أعتقد شخصياً أن تغليف العديد من الطرق يكفي لاستخدام ملفات تعريف الارتباط.
3. العمل
(1) فهم ملفات تعريف الارتباط. جوهر ملفات تعريف الارتباط هو ملفات تعريف الارتباط HTTP. document.cookie عندما يكون الكائن الذي يمثله العميل مستندًا. لمزيد من المعلومات ، يمكنك قراءة الكود والتعليق التالي
(2) الرمز أعلاه: يجب أن تكون هذه الرموز بديهية للغاية ويمكن ضغطها مع رمز المشروع. أعتقد أن التعليقات في بداية ما يلي هي النقاط الرئيسية.
نسخة الكود كما يلي:
/*
* ملفات تعريف الارتباط HTTP: معلومات جلسة المتجر
* يجب ترميز الاسم والقيمة عند الإرسال
* ملف تعريف الارتباط مرتبط باسم المجال المحدد. لا يمكن مشاركة ملفات تعريف الارتباط بدون هذا المجال ، لكن يمكنهم مشاركة ملفات تعريف الارتباط على المحطات الفرعية على الموقع الرئيسي.
* ملفات تعريف الارتباط لديها بعض القيود: على سبيل المثال ، IE6 و IE6 محدودة إلى 20 ؛ IE7 50 ؛ Opera 30 ... لذلك يتم تعيين ملفات تعريف الارتباط عادةً وفقًا لمتطلبات [Must]
* اسم ملف تعريف الارتباط خالي من الحالات. يوصى أيضًا بتشفير عنوان URL لملف تعريف الارتباط ؛ المسار هو وسيلة جيدة لتمييز ملفات تعريف الارتباط في مواقف مختلفة ؛ ملف تعريف الارتباط مع علم الأمن
* أرسل إلى الخادم في حالة SSL ، لكن HTTP لن يفعل ذلك. يوصى بتعيين انتهاء الصلاحية والمجال ومسار ملفات تعريف الارتباط ؛ كل ملف تعريف ارتباط أقل من 4 كيلو بايت.
* */
// لتغليف ملفات تعريف الارتباط ، استخدم أساليب getter و setter لتبني أساليب getter و setter
(وظيفة (عالمية) {
// احصل على كائن ملف تعريف الارتباط ، معبراً عنه ككائن
وظيفة getCookiesObj () {
var cookies = {} ؛
if (document.cookie) {
var objs = document.cookie.split ('؛') ؛
لـ (var i in objs) {
index var = objs [i] .indexof ('=') ،
name = objs [i] .substr (0 ، index) ،
value = objs [i] .substr (index + 1 ، objs [i] .Length) ؛
ملفات تعريف الارتباط [الاسم] = القيمة ؛
}
}
إرجاع ملفات تعريف الارتباط ؛
}
// تعيين ملفات تعريف الارتباط
مجموعة الوظائف (الاسم ، القيمة ، الاختيار) {
// اختار MAXAGE ، المسار ، المجال ، آمن
if (name && value) {
var cookie = EncodeUricomponent (name) + '=' + EncodeUricomponent (value) ؛
// معلمات اختيارية
إذا (اختار) {
if (opts.maxage) {
ملف تعريف الارتباط += '؛ max-age = ' + opts.maxage ؛
}
if (opts.path) {
ملف تعريف الارتباط += '؛ path = ' + opts.path ؛
}
if (opts.domain) {
ملف تعريف الارتباط += '؛ المجال = ' + opts.domain ؛
}
if (opts.secure) {
ملف تعريف الارتباط += '؛ يؤمن'؛
}
}
document.cookie = ملف تعريف الارتباط ؛
إرجاع ملف تعريف الارتباط
}آخر{
يعود ''؛
}
}
// احصل على ملفات تعريف الارتباط
وظيفة الحصول على (الاسم) {
إرجاع decodeuricomponent (getCookiesObj () [name]) || باطل؛
}
// مسح ملف تعريف الارتباط
وظيفة إزالة (الاسم) {
if (getCookiesObj () [name]) {
document.cookie = name + '= ؛ أقصى سن = 0 '؛
}
}
// مسح جميع ملفات تعريف الارتباط
وظيفة clear () {
var cookies = getCookiesObj () ؛
لـ (مفتاح var في ملفات تعريف الارتباط) {
document.cookie = key + '= ؛ أقصى سن = 0 '؛
}
}
// احصل على جميع ملفات تعريف الارتباط
وظيفة getCookies (الاسم) {
إرجاع getCookiesObj () ؛
}
// حل الصراع
وظيفة noconflict (الاسم) {
if (name && typeof name === 'String') {
if (name && window ['cookie']) {
نافذة [name] = نافذة ["ملف تعريف الارتباط"] ؛
حذف النافذة ['cookie'] ؛
إرجاع نافذة [الاسم] ؛
}
}آخر{
إرجاع نافذة ["ملف تعريف الارتباط"] ؛
حذف النافذة ['cookie'] ؛
}
}
العالمي ['cookie'] = {
"getCookies": getCookies ،
'set': set ،
'Get': get ،
"إزالة": أزل ،
"واضح": واضح ،
'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 ('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 /*اسم جديد من ملف تعريف الارتباط* /) ؛
console.log ($ cookie) ؛
console.log ('------------------------------------------------------------------------------------
console.log ($ cookie.getCoOkies ()) ؛
</script>
</body>
</html>
(4) عنوان الرمز: https://github.com/vczero/cookie