成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

封裝一個 cookie 功能

Cc_2011 / 2411人閱讀

摘要:中的在中操作通過來實現(xiàn)操作在傳遞過程中,使用上面這樣的方式對于參數(shù)的傳遞和拼接都是不太方便的,下面我們來封裝一個自己的功能。上面就是我們封裝的功能模塊來幫主我們設(shè)置和獲取,之所以封裝這個功能最終的目的就是讓我們更方便的通過來操作。

閱讀原文


cookie 概述

由于瀏覽器無狀態(tài)的特性,cookie 技術(shù)應(yīng)運而生,cookie 是一個會話級的存儲,用于某些網(wǎng)站為了辨別用戶身份、進(jìn)行 session 跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密),通過訪問某些服務(wù)器而特定攜帶的存儲信息,不支持跨域,在瀏覽器清空緩存或超過有效期后失效。

JavaScript 中的 cookie

在 JavaScript 中操作 cookie 通過 document.cookie 來實現(xiàn):

// 操作 cookie
document.cookie = "key1=value1; key2=value2; path=/; domain=pandashen.com";

在傳遞 cookie 過程中,使用上面這樣的方式對于參數(shù)的傳遞和拼接都是不太方便的,下面我們來封裝一個自己的 cookie 功能。

封裝一個 cookie 模塊 1、整體思路設(shè)計
(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie() {}

    function getCookie() {}

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

我們封裝了一個自執(zhí)行函數(shù),在內(nèi)部將 cookie 基本參數(shù)的鍵名存入 kvTool 對象當(dāng)中設(shè)計的 options 參數(shù)的鍵名一一對應(yīng),并多帶帶聲明一個設(shè)置 cookie 的方法 setCookie 和獲取 cookie 的方法 getCookie,最后用函數(shù)表達(dá)式的形式聲明一個 cookieUtil 暴露給全局作用域。

2、setCookie 方法的實現(xiàn)
(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie(k, v, options) {
        if (!options) {
            document.cookie = k + "=" + v;
        } else {
            var tmp = [];
            for (var key in options) {
                // { path="/", domain="pandashen.com" }
                tmp.push(kvTool[key] + "=" + options[key]);
            }
            document.cookie = k + "=" + v + "; " + tmp.join("; ");
        }
    }

    function getCookie() {}

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

setCookie 方法的有三個參數(shù):

k:cookie 發(fā)送信息的鍵

v:cookie 發(fā)送信息的值

options:cookie 的基本參數(shù)

當(dāng)沒有傳入基本參數(shù) options 的時候直接將 cookie 發(fā)送信息的鍵值拼接賦值給 document.cookie。

傳入基本參數(shù) options 的時候取出 kvTool 真正的鍵名,并和 cookie 發(fā)送的信息的鍵值拼接成 k=v; k=v 形式的字符串賦值給 document.cookie。

3、getCookie 方法的實現(xiàn)
(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie(k, v, options) {
        if (!options) {
            document.cookie = k + "=" + v;
        } else {
            var tmp = [];
            for (var key in options) {
                // { path="/", domain="pandashen.com" }
                tmp.push(kvTool[key] + "=" + options[key]);
            }
            document.cookie = k + "=" + v + "; " + tmp.join("; ");
        }
    }

    function getCookie(k) {
        var strCookie = document.cookie;
        // 形如: "k=v; k=v; k=v; k=v"
        var kvs = strCookie.split(";").map(v => v.trim());
        var objCookie = {};

        kvs.forEach(v => {
            var kv = v.split("=");
            objCookie[kv[0]] = kv[1];
        });

        return objCookie[k];
    }

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

getCookie 方法只有一個參數(shù),即我們要獲取的 cookie 的某一個屬性的鍵,函數(shù)會將對應(yīng)的值返回。

其實對外暴露的方法只有 cookieUtil,所以 setCookiegetCookie 都是在 cookieUtil 內(nèi)部調(diào)用的。

4、cookieUtil 方法的實現(xiàn)
(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie(k, v, options) {
        if (!options) {
            document.cookie = k + "=" + v;
        } else {
            var tmp = [];
            for (var key in options) {
                // { path="/", domain="pandashen.com" }
                tmp.push(kvTool[key] + "=" + options[key]);
            }
            document.cookie = k + "=" + v + "; " + tmp.join("; ");
        }
    }

    function getCookie(k) {
        var strCookie = document.cookie;
        // 形如: "k=v; k=v; k=v; k=v"
        var kvs = strCookie.split(";").map(v => v.trim());
        var objCookie = {};

        kvs.forEach(v => {
            var kv = v.split("=");
            objCookie[kv[0]] = kv[1];
        });

        return objCookie[k];
    }

    var cookieUtil = function(key, value, options) {
        if (!value) {
            // 沒有傳參, 得到數(shù)據(jù)
            return getCookie(key);
        } else {
            setCookie(key, value, options);
        }
    };

    window.cookieUtil = cookieUtil;
})();

cookieUtil 的邏輯為當(dāng) keyvalue 兩個參數(shù)都傳入時,調(diào)用 setCookie 來設(shè)置 cookie,只傳入 key 時,調(diào)用 getCookie 獲取 cookie 對應(yīng)參數(shù)的值。

上面就是我們封裝的 cookie 功能模塊來幫主我們設(shè)置和獲取 cookie,之所以封裝這個功能最終的目的就是讓我們更方便的通過 JavaScript 來操作 cookie。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/98289.html

相關(guān)文章

  • 本地存儲cookie封裝,提供簡單的API

    摘要:本地存儲的封裝,提供簡單的,沒有對做兼容處理,因為俺主要用于,,移動端等先進(jìn)瀏覽器里面跑。安裝下載地址設(shè)置的值,生存時間半個小時獲取的值,顯示刪除清空獲取所有批量設(shè)置的值過期時間路徑域以及安全。如果想讓本地也加密,得自己加密數(shù)據(jù)。 showImg(https://img.shields.io/github/issues/jaywcjlove/cookie.js.svg); showIm...

    wwq0327 評論0 收藏0
  • javascript cookie的傳統(tǒng)用法,用cookie一個記住用戶名的小功能

    摘要:設(shè)置天過期,代表昨天已經(jīng)過期存一個,天之后過期天之后過期記得用火狐測試做一個小記住用戶名兼容測試名字值多少天過期參數(shù)傳多少天,就過期多少天如果沒找到返回空字符串。 最簡單的設(shè)置cookie的方法 document.cookie=password=123456; 用expires設(shè)置cookie過期時間 window.onload=function(){ v...

    mcterry 評論0 收藏0
  • express簡單總結(jié)

    摘要:介紹如有不詳細(xì)或者不正確的地方多多指正。可以通過官方提供的命令行進(jìn)行安裝,官方目前默認(rèn)的界面文件用格式,建議修改為格式的文件版權(quán)問題,同時要在中安裝對應(yīng)的包和設(shè)置對應(yīng)的界面引擎解釋器。 express介紹 如有不詳細(xì)或者不正確的地方多多指正。 我們可以拿js與jquery關(guān)系來類比一下: jQuery是JS在瀏覽器環(huán)境下的封裝庫,把DOM操作,ajax等封裝成了兼容性好,方便使用的方法...

    ivyzhang 評論0 收藏0
  • koa源碼閱讀[1]-koa與koa-compose

    摘要:接上次挖的坑,對相關(guān)的源碼進(jìn)行分析第一篇。和同為一批人進(jìn)行開發(fā),與相比,顯得非常的迷你。在接收到一個請求后,會拿之前提到的與來創(chuàng)建本次請求所使用的上下文。以及如果沒有手動指定,會默認(rèn)指定為。 接上次挖的坑,對koa2.x相關(guān)的源碼進(jìn)行分析 第一篇。 不得不說,koa是一個很輕量、很優(yōu)雅的http框架,尤其是在2.x以后移除了co的引入,使其代碼變得更為清晰。 express和ko...

    vibiu 評論0 收藏0
  • Vue2.0 + ElementUI 手寫權(quán)限管理系統(tǒng)后臺模板(一)——簡述

    摘要:簡介最近寫了一個基于權(quán)限管理系統(tǒng)的后臺模板,包含了正常項目開發(fā)所需的框架功能,開發(fā)者使用的時候只需要專注于項目的業(yè)務(wù)邏輯就好。同時接下來會讓你擁有一個自己完全掌控的框架。 簡介 最近寫了一個基于vue2.0+element-ui權(quán)限管理系統(tǒng)的后臺模板,包含了正常項目開發(fā)所需的框架功能,開發(fā)者使用的時候只需要專注于項目的業(yè)務(wù)邏輯就好。同時接下來會讓你擁有一個自己完全掌控的框架。 源碼地址...

    _ivan 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<