版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82655713

简单封装浏览器 cookie 工具类

目前主流浏览器一般都支持 cookie ,以下对 cookie 的操作进行简单封装,以方便使用

更多精彩

  • 更多技术博客,请移步 asing1elife’s blog

主体封装类

import { storagePrefix } from 'assets/scripts/config/config'
import { verify, uri } from 'assets/scripts/tools'/*** cookies操作类*/
export default new class Cookie {/*** 构造函数*/constructor() {this.defaults = {}this.expiresMultiplier = 60 * 60 * 24this.prefix = storagePrefix}/*** 根据key获取cookie的值* @param {string} key 键* @returns {object} 值*/get(key) {if (!key) {throw new Error('没有找到key。')}if (typeof key === 'object') {throw new Error('key不能是一个对象。')}let cookies = this.all()let value = cookies[this.prefix + key]try {value = JSON.parse(value)} catch (e) {value = {}}return value}/*** 设置cookies* @param key 键* @param value 值* @param options 选项* @returns {Cookie}*/set(key, value, options) {options = verify.isObject(options) ? options : {expires: options}let expires = options.expires !== undefined ? options.expires : (this.defaults.expires || '')let expiresType = typeof (expires)if (expiresType === 'string' && expires !== '') {expires = new Date(expires)} else if (expiresType === 'number') {expires = new Date(+new Date() + 1000 * this.expiresMultiplier * expires)}if (expires !== '' && 'toGMTString' in expires) {expires = ';expires=' + expires.toGMTString()}let path = options.path || this.defaults.pathpath = path ? ';path=' + path : ''let domain = options.domain || this.defaults.domaindomain = domain ? ';domain=' + domain : ''let secure = options.secure || this.defaults.secure ? ';secure' : ''if (options.secure === false) secure = ''document.cookie = uri.encode(this.prefix + key) + '=' + uri.encode(JSON.stringify(value)) + expires + path + domain + securereturn this}/*** 删除cookie* @param {string||array} keys 删除cookie的key* @returns {Cookie}*/remove(keys) {keys = verify.isArray(keys) ? keys : [keys]for (let i = 0, l = keys.length; i < l; i++) {this.set(keys[i], '', -1)}return this}/*** 获取所有的cookie* @returns {object} cookie对象*/all() {let cookie = document.cookieif (cookie === '') return {}let cookieArr = cookie.split('; ')let result = {}for (let i = 0, l = cookieArr.length; i < l; i++) {let item = cookieArr[i].split('=')let key = uri.decode(item.shift())let value = uri.decode(item.join(''))result[key] = value}return result}
}

verify 工具类

export default new class Verify {// 验证url是否正确,true/falseisUrl (url) {return (/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?/i).test(url)}// 验证手机号码是否正确, true/falseisTel (tel) {return (/^1[3|4|5|8][0-9]\d{4,8}$/).test(tel)}// 判断是否是object对象isObject (value) {return !!value && Object.prototype.toString.call(value) === '[object Object]'}// 判断是否是数组isArray (value) {return Object.prototype.toString.call(value) === '[object Array]'}
}

uri 工具类

export default new class Uri {decode (value) {return decodeURIComponent(value)}encode (value) {return encodeURIComponent(value)}
}

config 基础配置

// 本地存储的前缀
export const storagePrefix = 'tshark_quick_storage_'

简单封装浏览器 cookie 工具类相关推荐

  1. cookie工具类 java_springboot封装JsonUtil,CookieUtil工具类代码实例

    这篇文章主要介绍了springboot封装JsonUtil,CookieUtil工具类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Jso ...

  2. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...

  3. httpurlconnection 封装_不要再封装各种Util工具类了,看看这个框架

    不要再封装各种Util工具类了,看看这个框架 Hutool 谐音 "糊涂",寓意追求 "万事都作糊涂观,无所谓失,无所谓得" 的境界.    Hutool 是一 ...

  4. Cookie工具类-cookieUtil.js

    重写Cookie工具类,可以在edit.jsp中引入,在引入的其他js中直接用. 在edit.jsp中引入 <script type="text/javascript" sr ...

  5. java8:封装lambda泛型工具类之list转为map

    1   史上最简单入门:java8的lambda中的map相关操作:基础及注意事项图文详解 2   java8的lambda中collect接口案例及原理详解,官方文档解读 3   java8:封装l ...

  6. Cookie工具类的借鉴别人的ThinkGem的代码学习

    2019独角兽企业重金招聘Python工程师标准>>> /*** Copyright © 2012-2014 <a href="https://github.com/ ...

  7. vue-03-4:vue封装方法到工具类

    vue-03-4:vue封装方法到工具类 参考博客:咸鱼最牛逼 地址:https://blog.csdn.net/panchang199266?utm_source=feed 一.步骤 1.src目录 ...

  8. 鸿蒙harmonyOS封装一个Toast工具类

    鸿蒙harmonyOS封装一个Toast工具类 文章目录 鸿蒙harmonyOS封装一个Toast工具类 前言 一.参数都弄上即可 二.使用步骤 1.封装 2.使用 总结 前言 无语 提示:以下是本篇 ...

  9. (最简单)Java 格式化数字每3位加逗号分隔(自己封装好的工具类,直接可用)

    滴滴滴,快上车,都在备注里了~~~ package com.softsec.util;/*** Created with IDEA** @Author Chenhh* @Date 2019/12/11 ...

最新文章

  1. 全注解怎么使用分页插件_分页插件使用的方式
  2. 韩国最新「美女元宇宙」引爆Reddit!最强换脸神器美女自拍一键转漫画
  3. 树莓派:3安装NodeJS
  4. Java中的证书透明度验证
  5. sql alter表字段处理
  6. html显示pcd,PCD5043 Datasheet(数据表) 10 Page - NXP Semiconductors
  7. java面向对象的六大原则
  8. cvAddWeighted 进行图片融合
  9. 基于SSM实现的房屋租赁系统【附源码】(毕设)
  10. eclipse JRebel破解
  11. 什么是机器学习?机器学习的工作原理是什么?
  12. android webview 下载图片,Android使用webView长按保存下载网络图片
  13. RK3066 实现LED闪烁的代码分析
  14. “概率模型与计算机视觉” 林达华
  15. xftp无法取消被动模式
  16. PCB添加图片或logo的方法
  17. win10打字反应慢处理
  18. C51 (矩阵键盘密码锁)
  19. 51 币圈里外的强者愈强----超级君扯淡录【2020-07-13 2100】
  20. 无源晶振电路设计和改进

热门文章

  1. .net mvc actionresult 返回字符串_.NET架构师知识普及
  2. linux fifo 视频,Linux FIFO学习
  3. w7计算机屏幕保护设置方法,W7屏保怎么设置
  4. php访问父类变量,php – 如何使用parent :: method访问父类中的变量
  5. 产品经理岗位职责说明_公司销售经理岗位职责说明书
  6. oracle10g資料庫調效,資料庫 | 簡睿隨筆 | 學習過程的紀錄與備忘
  7. 利用OpenCV读取和写入视频
  8. 第十六届全国大学生智能汽车竞赛 车模技术检查表格与技术文件
  9. 基于uPC1677C射频功率放大
  10. 在控制台打印sql语句的办法(MyBatis Log Plugin插件的安装与使用)