摘要:中的在中操作通過來實現操作在傳遞過程中,使用上面這樣的方式對于參數的傳遞和拼接都是不太方便的,下面我們來封裝一個自己的功能。上面就是我們封裝的功能模塊來幫主我們設置和獲取,之所以封裝這個功能最終的目的就是讓我們更方便的通過來操作。
閱讀原文
由于瀏覽器無狀態的特性,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,所以 setCookie 和 getCookie 都是在 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 的邏輯為當 key 和 value 兩個參數都傳入時,調用 setCookie 來設置 cookie,只傳入 key 時,調用 getCookie 獲取 cookie 對應參數的值。
上面就是我們封裝的 cookie 功能模塊來幫主我們設置和獲取 cookie,之所以封裝這個功能最終的目的就是讓我們更方便的通過 JavaScript 來操作 cookie。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98289.html
摘要:本地存儲的封裝,提供簡單的,沒有對做兼容處理,因為俺主要用于,,移動端等先進瀏覽器里面跑。安裝下載地址設置的值,生存時間半個小時獲取的值,顯示刪除清空獲取所有批量設置的值過期時間路徑域以及安全。如果想讓本地也加密,得自己加密數據。 showImg(https://img.shields.io/github/issues/jaywcjlove/cookie.js.svg); showIm...
摘要:設置天過期,代表昨天已經過期存一個,天之后過期天之后過期記得用火狐測試做一個小記住用戶名兼容測試名字值多少天過期參數傳多少天,就過期多少天如果沒找到返回空字符串。 最簡單的設置cookie的方法 document.cookie=password=123456; 用expires設置cookie過期時間 window.onload=function(){ v...
摘要:介紹如有不詳細或者不正確的地方多多指正。可以通過官方提供的命令行進行安裝,官方目前默認的界面文件用格式,建議修改為格式的文件版權問題,同時要在中安裝對應的包和設置對應的界面引擎解釋器。 express介紹 如有不詳細或者不正確的地方多多指正。 我們可以拿js與jquery關系來類比一下: jQuery是JS在瀏覽器環境下的封裝庫,把DOM操作,ajax等封裝成了兼容性好,方便使用的方法...
摘要:接上次挖的坑,對相關的源碼進行分析第一篇。和同為一批人進行開發,與相比,顯得非常的迷你。在接收到一個請求后,會拿之前提到的與來創建本次請求所使用的上下文。以及如果沒有手動指定,會默認指定為。 接上次挖的坑,對koa2.x相關的源碼進行分析 第一篇。 不得不說,koa是一個很輕量、很優雅的http框架,尤其是在2.x以后移除了co的引入,使其代碼變得更為清晰。 express和ko...
摘要:簡介最近寫了一個基于權限管理系統的后臺模板,包含了正常項目開發所需的框架功能,開發者使用的時候只需要專注于項目的業務邏輯就好。同時接下來會讓你擁有一個自己完全掌控的框架。 簡介 最近寫了一個基于vue2.0+element-ui權限管理系統的后臺模板,包含了正常項目開發所需的框架功能,開發者使用的時候只需要專注于項目的業務邏輯就好。同時接下來會讓你擁有一個自己完全掌控的框架。 源碼地址...
閱讀 3639·2021-11-24 09:38
閱讀 3142·2021-11-15 11:37
閱讀 781·2021-11-12 10:36
閱讀 3547·2021-10-21 09:38
閱讀 3220·2021-09-28 09:36
閱讀 2420·2021-09-22 16:01
閱讀 4985·2021-09-22 15:09
閱讀 1210·2019-08-30 15:55