简单封装浏览器 cookie 工具类
简单封装浏览器 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 工具类相关推荐
- cookie工具类 java_springboot封装JsonUtil,CookieUtil工具类代码实例
这篇文章主要介绍了springboot封装JsonUtil,CookieUtil工具类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Jso ...
- 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...
前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...
- httpurlconnection 封装_不要再封装各种Util工具类了,看看这个框架
不要再封装各种Util工具类了,看看这个框架 Hutool 谐音 "糊涂",寓意追求 "万事都作糊涂观,无所谓失,无所谓得" 的境界. Hutool 是一 ...
- Cookie工具类-cookieUtil.js
重写Cookie工具类,可以在edit.jsp中引入,在引入的其他js中直接用. 在edit.jsp中引入 <script type="text/javascript" sr ...
- java8:封装lambda泛型工具类之list转为map
1 史上最简单入门:java8的lambda中的map相关操作:基础及注意事项图文详解 2 java8的lambda中collect接口案例及原理详解,官方文档解读 3 java8:封装l ...
- Cookie工具类的借鉴别人的ThinkGem的代码学习
2019独角兽企业重金招聘Python工程师标准>>> /*** Copyright © 2012-2014 <a href="https://github.com/ ...
- vue-03-4:vue封装方法到工具类
vue-03-4:vue封装方法到工具类 参考博客:咸鱼最牛逼 地址:https://blog.csdn.net/panchang199266?utm_source=feed 一.步骤 1.src目录 ...
- 鸿蒙harmonyOS封装一个Toast工具类
鸿蒙harmonyOS封装一个Toast工具类 文章目录 鸿蒙harmonyOS封装一个Toast工具类 前言 一.参数都弄上即可 二.使用步骤 1.封装 2.使用 总结 前言 无语 提示:以下是本篇 ...
- (最简单)Java 格式化数字每3位加逗号分隔(自己封装好的工具类,直接可用)
滴滴滴,快上车,都在备注里了~~~ package com.softsec.util;/*** Created with IDEA** @Author Chenhh* @Date 2019/12/11 ...
最新文章
- 全注解怎么使用分页插件_分页插件使用的方式
- 韩国最新「美女元宇宙」引爆Reddit!最强换脸神器美女自拍一键转漫画
- 树莓派:3安装NodeJS
- Java中的证书透明度验证
- sql alter表字段处理
- html显示pcd,PCD5043 Datasheet(数据表) 10 Page - NXP Semiconductors
- java面向对象的六大原则
- cvAddWeighted 进行图片融合
- 基于SSM实现的房屋租赁系统【附源码】(毕设)
- eclipse JRebel破解
- 什么是机器学习?机器学习的工作原理是什么?
- android webview 下载图片,Android使用webView长按保存下载网络图片
- RK3066 实现LED闪烁的代码分析
- “概率模型与计算机视觉” 林达华
- xftp无法取消被动模式
- PCB添加图片或logo的方法
- win10打字反应慢处理
- C51 (矩阵键盘密码锁)
- 51 币圈里外的强者愈强----超级君扯淡录【2020-07-13 2100】
- 无源晶振电路设计和改进
热门文章
- .net mvc actionresult 返回字符串_.NET架构师知识普及
- linux fifo 视频,Linux FIFO学习
- w7计算机屏幕保护设置方法,W7屏保怎么设置
- php访问父类变量,php – 如何使用parent :: method访问父类中的变量
- 产品经理岗位职责说明_公司销售经理岗位职责说明书
- oracle10g資料庫調效,資料庫 | 簡睿隨筆 | 學習過程的紀錄與備忘
- 利用OpenCV读取和写入视频
- 第十六届全国大学生智能汽车竞赛 车模技术检查表格与技术文件
- 基于uPC1677C射频功率放大
- 在控制台打印sql语句的办法(MyBatis Log Plugin插件的安装与使用)