Rumah > hujung hadapan web > tutorial js > Enkapsulasi kuki dan panduan penggunaan yang dibuat oleh kemahiran javascript_javascript

Enkapsulasi kuki dan panduan penggunaan yang dibuat oleh kemahiran javascript_javascript

WBOY
Lepaskan: 2016-05-16 16:22:40
asal
1134 orang telah melayarinya

1. Kata Pengantar

Sebelum ini, apabila menggunakan kuki, semuanya dikendalikan dalam bentuk document.cookie Walaupun keserasian baik, ia menyusahkan. Saya secara peribadi suka membina roda, jadi saya merangkum kelas alat untuk kuki. Untuk masa yang lama, saya suka menulis kod, tetapi saya tidak begitu suka ringkasan teks, dan saya juga tidak suka menulis perkara yang berpecah-belah Nampaknya saya perlu mengubahnya.

2. Idea

(1) Cara merangkum dan bentuk apa yang hendak dikapsulkan

Cara merangkum: Gunakan js asli untuk merangkumnya ke dalam alat, supaya ia boleh digunakan di mana-mana sahaja. Mengekapsulkan document.cookie ialah cara terbaik dan semua operasi adalah berdasarkan document.cookie.

Cara merangkumnya: Ia boleh wujud dalam bentuk objek dan boleh dilaksanakan menggunakan kaedah getter & setter.

(2) Kaedah manakah yang terkandung

get(), set(name, value, opts), remove(name), clear(), getCookies(), dsb. Saya secara peribadi berpendapat bahawa merangkum begitu banyak kaedah sudah cukup untuk menggunakan kuki.

3. Tindakan

(1) Fahami kuki Intipati kuki ialah kuki HTTP Objek yang dipaparkan pada klien ialah document.cookie Untuk maklumat lanjut, anda boleh membaca kod saya di bawah dan mengulas

(2) Kod atas: Kod ini hendaklah sangat intuitif dan boleh dimampatkan bersama kod projek. Saya rasa komen pembukaan di bawah adalah perkara utama.

Salin kod Kod adalah seperti berikut:

/*
* Kuki HTTP: menyimpan maklumat sesi
* Nama dan nilai mesti dikodkan RUL apabila dihantar
* Kuki terikat pada nama domain yang ditentukan Kuki tidak boleh dikongsi dengan domain bukan tempatan, tetapi kuki boleh dikongsi dari tapak utama ke sub-tapak
* Kuki mempunyai beberapa sekatan: contohnya, IE6 & IE6- terhad kepada 20 IE7 50... jadi kuki biasanya ditetapkan mengikut keperluan
* Nama kuki tidak sensitif huruf besar dan kecil; ia juga disyorkan untuk mengekod URL kuki adalah cara yang baik untuk membezakan penghantaran kuki dalam keadaan yang berbeza dengan kuki tanda keselamatan
* Dalam kes SSL, ia dihantar ke pelayan, tetapi tidak dalam http. Adalah disyorkan untuk menetapkan tamat tempoh, domain dan laluan untuk kuki; setiap kuki hendaklah kurang daripada 4KB
* */
//Encapsulate cookies menggunakan kaedah getter dan setter
(fungsi(global){
//Dapatkan objek kuki, dinyatakan sebagai objek
Fungsi getCookiesObj(){
        var cookies = {};
Jika(document.cookie){
            var objs = document.cookie.split('; ');
untuk(var i dalam objs){
              var index = objs[i].indexOf('='),
nama = objs[i].substr(0, indeks),
nilai = objs[i].substr(indeks 1, objs[i].panjang);                   kuki[nama] = nilai;
            }
}
         pulangkan kuki;
}
//Tetapkan kuki
Set fungsi(nama, nilai, pilihan){
​​​​ //memilih maxAge, laluan, domain, selamat
Jika(nama && nilai){
               var cookie = encodeURIComponent(name) '=' encodeURIComponent(value);
​​​​​​ //Parameter pilihan
                jika (pilihan){
Jika(opts.maxAge){
Cookie = '; max-age=' opts.maxAge
                }
Jika(opts.path){
Kuki = '; path=' opts.path;
                }
Jika(opts.domain){
Kuki = '; domain=' opts.domain;
                }
Jika(opts.secure){
                     kuki = 'selamat';                 }
            }
                 document.cookie = cookie;
               pulangkan kuki;
         }lain{
              kembali '';
}
}
//Dapatkan kuki
Fungsi dapatkan(nama){
          kembalikan decodeURIComponent(getCookiesObj()[nama]) || null;
}
//Kosongkan kuki
Fungsi alih keluar(nama){
        if(getCookiesObj()[name]){
            document.cookie = nama '=; umur maks=0';
        }
    }
    //清除所有kuki
    fungsi clear(){
        var cookies = getCookiesObj();
        untuk(kunci var dalam kuki){
            document.cookie = kunci '=; umur maks=0';
        }
    }
    //获取所有kuki
    fungsi getCookies(nama){
        kembalikan getCookiesObj();
    }
    //解决冲突
    fungsi noConflict(nama){
        if(nama && jenis nama === 'rentetan'){
            if(nama && tetingkap['kuki']){
                tetingkap[nama] = tetingkap['kuki'];
                padamkan tetingkap['kuki'];
                tetingkap kembali [nama];
            }
        }lain{
            tetingkap kembali ['kuki'];
            padamkan tetingkap['kuki'];
        }
    }
    global['kuki'] = {
        'getCookies': getCookies,
        'set': set,
        'dapat': dapatkan,
        'alih keluar': alih keluar,
        'jelas': jelas,
        'tiadaKonflik': tiadaKonflik
    };
})(tetingkap);

 (3)contoh

复制代码 代码如下:



   
       
        Cookie-Beispiel
   
   
       
       
   

(4)代码地址:https://github.com/vczero/cookie

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan