国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

封裝一個 cookie 功能

Cc_2011 / 2344人閱讀

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

閱讀原文


cookie 概述

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

JavaScript 中的 cookie

在 JavaScript 中操作 cookie 通過 document.cookie 來實現:

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

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

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

    function setCookie() {}

    function getCookie() {}

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

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

2、setCookie 方法的實現
(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 方法的有三個參數:

k:cookie 發送信息的鍵

v:cookie 發送信息的值

options:cookie 的基本參數

當沒有傳入基本參數 options 的時候直接將 cookie 發送信息的鍵值拼接賦值給 document.cookie

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

3、getCookie 方法的實現
(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 方法只有一個參數,即我們要獲取的 cookie 的某一個屬性的鍵,函數會將對應的值返回。

其實對外暴露的方法只有 cookieUtil,所以 setCookiegetCookie 都是在 cookieUtil 內部調用的。

4、cookieUtil 方法的實現
(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) {
            // 沒有傳參, 得到數據
            return getCookie(key);
        } else {
            setCookie(key, value, options);
        }
    };

    window.cookieUtil = cookieUtil;
})();

cookieUtil 的邏輯為當 keyvalue 兩個參數都傳入時,調用 setCookie 來設置 cookie,只傳入 key 時,調用 getCookie 獲取 cookie 對應參數的值。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98289.html

相關文章

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

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

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

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

    mcterry 評論0 收藏0
  • express簡單總結

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

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

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

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

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

    _ivan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<