zjjk-lishizhen

咱家健康前端代码库-李时珍

Usage no npm install needed!

<script type="module">
  import zjjkLishizhen from 'https://cdn.skypack.dev/zjjk-lishizhen';
</script>

README

安装

npm install zjjk-lishizhen --save

使用方法

// 全量引入
import lishizhen from 'zjjk-lishizhen'
// 根据身份证号,获取生日、年龄、性别
lishizhen.common.idCardNo('130106199901181811')
// 向本地localStorage存储变量name 值为张三
lishizhen.data.setData('name', '张三')

// 部分引入
import { common, data } from 'zjjk-lishizhen'
// 根据身份证号,获取生日、年龄、性别
common.idCardNo('130106199901181811')
// 向本地localStorage存储变量name 值为张三
data.setData('name', '张三')

类别

  • common 公共方法
  • time 时间相关方法
  • data 本地存储相关方法
  • cookie cookie相关方法
  • mobile 移动端相关代码
  • validate 公共验证规则
  • dessert 常用的小功能(甜点)

common 公共方法

jsGetAge 根据生日判断年龄,返回周岁

/**
 * 根据生日判断年龄,返回周岁
 * @param {String} 生日 1986-01-18
 * @return {Number}
 */
lishizhen.common.jsGetAge('1986-01-18') // 37

idCardNo 根据身份证号,获取生日、年龄、性别

/**
 * 根据身份证号,获取生日、性别、年龄、地址码
 * @param {String} 身份证号
 * @return {Boolean|Object}
 *   Boolean: 返回false表示身份证不正确
 *   Object: {birthday: 生日, birthday: 生日, sexName: 性别, sexCode: 性别码, age: 年龄, areaCode: 地址码}
 */
lishizhen.common.idCardNo('130107197803017473')
// 返回结果
{
  birthday: "1978-03-01", // 生日
  sexName: "男", // 性别 中文
  sexCode: "1", // 性别编码 1男 2女
  age: 42, // 年龄
  areaCode: "130107" // 地址码
}

getAbsoluteLocation 获取指定元素距离屏幕的距离

<div id="demo" style="position: absolute; top: 100px; left: 100px; background-color: red; width:150px; height: 150px;"></div>
/**
 * 获取指定元素距离屏幕的距离
 * @param {DOM} element
 * @return {Boolean|Object}
 *   Boolean: 返回false表示DOM元素不正确
 *   Object: {top: 距离顶部距离, left: 距离左侧距离, offsetWidth: 元素宽度, offsetHeight: 元素高度}
 */

lishizhen.common.getAbsoluteLocation(document.getElementById('demo'))
// 返回的数据
{
  top: 100, // 距离顶部距离
  left: 100, // 距离左侧距离
  offsetWidth: 150, // 元素宽度
  offsetHeight: 150 // 元素高度
}

getUrlParameter 获取当前url中的protocol、host、port、query等参数

/**
 * 获取当前url中的protocol、host、port、query等参数
 * @param {String} url 需要解析的url
 * @return {Array} 返回数组包含当前url各项参数
 */

getQueryString 获取查询字符串的值

/**
 * 获取当前url中参数的值
 * @param {String} 要查询的key名
 * @return {String}
 */
lishizhen.common.getQueryString('name')

银行卡号4位分割

/**
 * 银行卡号4位分割
 * @param {String} 要分隔的银行卡号
 * @param {String} 分隔符 默认 ' '
 * @return {String}
 */
lishizhen.common.splitBy4Bit('6228480632103493455') // '6228 4806 3210 3493 455'
lishizhen.common.splitBy4Bit('6228480632103493455', '-') // '6228-4806-3210-3493-455'

手机号3-4-4分割

/**
 * 手机号3-4-4分割
 * @param {String} 要分隔的手机号
 * @param {String} 分隔符 默认 ' '
 * @return {String}
 */
lishizhen.common.splitBy3Bit('15133124118') // '151 3312 4118'
lishizhen.common.splitBy3Bit('15133124118', '-') // '151-3312-4118'

queryStringToObject 查询字符串转对象

/**
 * 查询字符串转对象
 * @param {String} 要转换的查询字符串
 * @return {Object} 转换后的对象
 */
lishizhen.common.queryStringToObject('name=张三&age=20') // {name: "张三", age: "20"}

objectToQueryString 对象转查询字符串

/**
 * 对象转查询字符串
 * @param {Object} 要转换的对象
 * @return {String} 转换后的查询字符串,会对值做 encodeURIComponent 处理
 */
lishizhen.common.objectToQueryString({name: "张三", age: "20"}) // 'name=%E5%BC%A0%E4%B8%89&age=20' 会对值做 encodeURIComponent 处理

读取深层属性

/**
 * 读取深层属性,如果读取不存在的属性则返回默认值 默认undefined
 * @param {Object} obj 要读取的对象
 * @param {String} attrPath 多层属性表示形式: a|a.b|a.b.c 等无限级深度
 * @param {Any} defaultVal 没有读取到属性时的默认值 默认undefined
 * @param {String} separator 深层属性的分隔符 默认'.'
 * @returns {Any} 读取的值
 */
let obj = {
  data: {
    a: 123
  }
}
lishizhen.common.getDeepValue(obj, 'data.a') // 123
lishizhen.common.getDeepValue(obj, 'data.b') // undefined
lishizhen.common.getDeepValue(obj, 'data.b', null) // 设置默认返回值 null

设置深层属性

/**
 * 设置深层属性
 * @param {Object} obj 要赋值的对象
 * @param {String} attrPath 多层属性表示形式: a.b.c
 * @param {any} value 要设置的值
 */
let obj = {
  data: {
    a: 123
  }
}
lishizhen.common.setDeepValue(obj, 'data.a', 456)
console.log(obj) // {data: {a: 456}}

dateFtt 格式化时间函数

/**
 * 格式化时间函数
 * @param {String} 格式化日期的格式字符串 yyyy-MM-dd hh:mm:ss:S q
 * @param {String|Date} '2017-01-11 12:12:55' 时间字符串 | '2017/01/11 12:12:55' 时间字符串 | 时间戳 秒、毫秒 | new Data() 时间对象
 * @return {String} 2017-12-09 12:22:03:233 4
 */
lishizhen.common.dateFtt('yyyy-MM-dd', new Date()) // 使用时间对象格式化 2021-03-19
lishizhen.common.dateFtt('yyyy-MM-dd hh:mm:ss', '2017-01-11 12:12:55') // 使用时间字符串格式化 2017-01-11 12:12:55
lishizhen.common.dateFtt('yyyy-MM-dd hh:mm:ss', '2017/01/11 12:12:55') // 使用时间字符串格式化 2017-01-11 12:12:55
lishizhen.common.dateFtt('yyyy-MM-dd hh:mm:ss', '1620616873108') // 使用时间戳格式化 2021-03-19 11:14:22

isForbid 检查是否含有非法字符

/**
 * 检查是否含有非法字符
 * 非法字符包括:?、?、!、!、*、--、/、+、\、\\、$、^、.、;、<、>、=、{、}、%、~、&
 * @param {String} 要检测的字符串
 * @return {Boolean}
 */
lishizhen.common.isForbid('fdaf!xx') // true
lishizhen.common.isForbid('abcdefg') // false

isIE 检测是否是IE浏览器

/**
 * 检测是否是IE浏览器
 * @return {Boolean}
 */
lishizhen.common.isIE() // 返回 true 或 false

deepCopy 深度拷贝对象

/**
 * 深度拷贝对象
 * @param {Object} 要进行深度拷贝的对象
 * @return {Object} 拷贝后的新对象
 */
var a = {
  name: '张三',
  age: 22,
  say() {
    console.log('函数也可以拷贝哦')
  }
}
var d = lishizhen.common.deepCopy(a)
a === d // false
var e = a
e === a // true

deepMerge 深度合并对象

/**
 * 深度合并对象
 * @param {Objec} 要进行深度合并的对象1
 * @param {Objec} 要进行深度合并的对象2
 * @return {Objec} 深度合并后的新对象
 */
lishizhen.common.deepMerge({name: '张三'}, {age: 20}) // {name: '张三', age: 20}

secToTime 秒数转时间字符串

/**
 * 秒数转时间字符串
 * @param {Number} 秒数 如:86400
 * @return {String} 格式化后的时分秒,如:'24:00:00'
 */
lishizhen.common.secToTime(3600) // '01:00:00'

timeToSec 时间字符串转为秒

/**
 * 时间字符串转为秒
 * @param {String} 时间字符串 '24:00:00'
 * @return {Number} 秒数 如:86400
 */
// 1小时
lishizhen.common.timeToSec('01:00:00') // 3600
// 24小时
lishizhen.common.timeToSec('24:00:00') // 86400

格式化数字,比如数字千分位

/**
 * 格式化数字,比如数字千分位
 * @param {String|Number} 要格式化的数字
 * @param {Number} 每隔几位数进行分割 默认3
 * @param {Number} 要保留的小数位 默认2
 * @param {String} 用来分割的符号,默认,
 * @return {String} 1,234,567.00
 */
lishizhen.common.formatNumber('11111') // '11,111.00'
lishizhen.common.formatNumber('11111', 2) // '1,11,11.00'
lishizhen.common.formatNumber('11111', 2, 0) // '1,11,11'
lishizhen.common.formatNumber('11111', 2, 0, '|') // '1|11|11'

compressImage 压缩图片 默认会自动校正图片角度

/**
 * 压缩图片
 * @param {File} 图片文件元素 <input type="file"/>元素 event.target.files[0]
 * @param {Number} 图片最大宽度 0或负数表示不限制宽度 默认800(单位px)
 * @param {String | Number} 图片输出类型 默认jpg;可选png
 * @param {Float} 图片质量 只有outputType为jpg时有效 默认0.9
 * @param {Boolean} 是否校正图片角度 默认true
 * @return {Promise} original: 原图片的base64值; thumb: 处理后图片的base64值
 */
lishizhen.common.compressImage(file).then(res => {
  console.log('原图base64值:' + res.original)
  console.log('压缩图base64值:' + res.thumb)
})

// 设置最大宽度为1200,设置压缩图质量为1(100%)
lishizhen.common.compressImage(file, 1200, 'jpg', 1).then(res => {
  console.log('原图base64值:' + res.original)
  console.log('压缩图base64值:' + res.thumb)
})

// 设置最大宽度为1500 压缩图的格式为png
lishizhen.common.compressImage(file, 1500, 'png').then(res => {
  console.log('原图base64值:' + res.original)
  console.log('压缩图base64值:' + res.thumb)
})

rotateImage 校正图片角度

/**
 * 旋转图片
 * @param {File} 要校正的图片文件对象 <input type="file"/>元素 event.target.files[0]
 * @return {String} 校正角度后的图片的base64值
 */
lishizhen.common.rotateImage(file).then(res => {
  console.log('校正后的base64值:' + res)
})

typeOf 判断参数的数据类型

/**
 * 判断参数的数据类型
 * @param {Any} 要判断的数据
 * @return {String} boolean | number| string | function | array | date | regExp | undefined | null | object
 */
lishizhen.common.typeOf(true) // boolean
lishizhen.common.typeOf(666) // number
lishizhen.common.typeOf('56个民族是一家') // string
lishizhen.common.typeOf(function () {}) // function
lishizhen.common.typeOf([]) // array
lishizhen.common.typeOf(new Date()) // date
lishizhen.common.typeOf(/[abc]/) // regExp
lishizhen.common.typeOf() // undefined
lishizhen.common.typeOf(null) // null
lishizhen.common.typeOf({}) // object

isEmptyObj 判断参数是否是空对象

/**
 * 判断参数是否是空对象
 * @param {Object} 要判断的对象
 * @return {Boolean}
 */
lishizhen.common.isEmptyObj({name: '张三'}) // false
lishizhen.common.isEmptyObj({}) // true

isWechat 判断是否是微信端

/**
 * 判断是否是微信端
 * @return {Boolean}
 */
lishizhen.common.isWechat() // 返回 true 或 false

isMobile 判断是否是移动端

/**
 * 判断是否是移动端
 * @return {Boolean}
 */
lishizhen.common.isMobile() // 返回 true 或 false

isPc 判断是否是PC端

/**
 * 判断是否是PC端
 * @return {Boolean}
 */
lishizhen.common.isPc() // 返回 true 或 false

print 打印指定区域内容

/**
 * 打印指定区域内容
 * @param {DOM} 要打印的区域元素
 */
lishizhen.common.print(document.getElementById('div'))

getScrollWidth 获取浏览器滚动条的宽度

/**
 * 获取浏览器滚动条的宽度
 * @return {Number}
 */
lishizhen.common.getScrollWidth() // 17

desensitizationIdCard 身份证号脱敏

/**
 * 判断是否是PC端
 * @param {String} 要脱敏的身份证号
 * @return {String} 脱敏后的身份证号
 */
lishizhen.common.desensitizationIdCard('130105198601181814') // 13010519860118****

desensitizationPhone 手机号脱敏

/**
 * 手机号脱敏
 * @param {String} 要脱敏的手机号
 * @return {String} 脱敏后的手机号
 */
lishizhen.common.desensitizationPhone('15133124555') // 151****4555

debounce 创建防抖函数

/**
 * 创建防抖函数
 * @param {Function} 处理函数
 * @param {Number} 防抖的延时 单位毫秒
 * @return {Function}
 */
let debounce = lishizhen.common.debounce(() => {
  console.log('hello world!')
}, 300)
debounce()

throttle 创建节流函数

/**
 * 创建节流函数
 * @param {Function} 处理函数
 * @param {Number} 节流的延时 单位毫秒
 * @return {Function}
 */
let throttle = lishizhen.common.throttle(() => {
  console.log('hello world!')
}, 300)
throttle()

requestAnimFrame 动画函数(requestAnimationFrame兼容写法)


time 时间相关方法

getMonthDays 获得本年某月的天数

/**
 * 获得本年某月的天数
 * @params myMonth 要获取天数的月份
 */
lishizhen.time.getMonthDays(1) // 31
lishizhen.time.getMonthDays(4) // 30

getQuarterStartMonth 获得本季度的开端月份

/**
 * 获得本季度的开端月份
 * 返回结果 加1,不是返回的下标。内部调用时需注意
 */
lishizhen.time.getQuarterStartMonth() // 4

getWeekStartDate 获得本周开始日期。注意 星期日是第一天

/**
 * 获得本周开始日期
 * 星期日是第一天
 * @return {String}
 */
lishizhen.time.getWeekStartDate() // '2021-05-09'

getWeekEndDate 获得本周结束日期。注意 星期六是最后一天

/**
 * 获得本周结束日期
 * 星期六是最后一天
 * @return {String}
 */
lishizhen.time.getWeekEndDate() // '2021-05-15'

getMonthStartDate 获得本月开始日期

/**
 * 获得本月开始日期
 * @return {String}
 */
lishizhen.time.getMonthStartDate() // '2021-05-01'

getMonthEndDate 获得本月结束日期

/**
 * 获得本月结束日期
 * @return {String}
 */
lishizhen.time.getMonthEndDate() // '2021-05-31'

getLastMonthStartDate 获得上月开始日期

/**
 * 获得上月开始日期
 * @return {String}
 */
lishizhen.time.getLastMonthStartDate() // '2021-04-01'

getLastMonthEndDate 获得上月结束日期

/**
 * 获得上月结束日期
 * @return {String}
 */
lishizhen.time.getLastMonthEndDate() // '2021-04-30'

getQuarterStartDate 获得本季度的开端日期

/**
 * 获得本季度的开端日期
 * @return {String}
 */
lishizhen.time.getQuarterStartDate() // '2021-04-01'

getQuarterEndDate 获得本季度的停止日期

/**
 * 获得本季度的停止日期
 * @return {String}
 */
lishizhen.time.getQuarterEndDate() // '2021-06-30'

getDate 获取几天前或几天后的日期对象、或格式化后的日期字符串

/**
 * 获取几天前或几天后的日期对象、或格式化后的日期字符串
 * @param {Number} 获取第几天前 默认0获取当天 >0获取几天后的日期 <0获取几天前的日期
 * @param {String|null} 格式化日期的格式字符串 yyyy-MM-dd hh:mm:ss;传null时返回时间类型
 * @param {Date|String} 指定的时间,默认为当前时间
 * @return {Date|String}
 */
lishizhen.time.getDate() // 获取当天 字符串类型 的值 '2021-05-10 15:54:39'
lishizhen.time.getDate(-1) // 获取昨天 字符串类型 的值 '2021-05-10 15:54:39'
lishizhen.time.getDate(-1, null) // 获取昨天 时间对象类型 的值 Sun May 09 2021 15:55:37 GMT+0800 (中国标准时间)
lishizhen.time.getDate(-1, 'yyyy-MM-dd hh:mm:ss', '2020-12-12 11:11:22') // 返回2020-12-12 11:11:22的前一天 字符串类型 的值 2020-12-11 11:11:22

getDayOfWeek 获取今天是周几

/**
 * 获取今天是周几
 * @param {Date} date
 * @return {String}
 */
lishizhen.time.getDayOfWeek(new Date())

todayStartTime 获取当天开始时间 2021-11-11 00:00:00

/**
 * 获取当天开始时间
 * @param {String|null} fmt 格式化日期的格式字符串 yyyy-MM-dd hh:mm:ss;传null时返回时间类型
 * @returns {String|Date}
 */
lishizhen.time.todayStartTime() // 2021-05-10 11:11:52
lishizhen.time.todayStartTime('yyyy-MM-dd') // 2021-05-10
lishizhen.time.todayStartTime(null) // Mon May 10 2021 00:00:00 GMT+0800 (中国标准时间)

todayEndTime 获取当天结束时间 2021-11-11 23:59:59

/**
 * 获取当天结束时间
 * @param {String|null} fmt 格式化日期的格式字符串 yyyy-MM-dd hh:mm:ss;传null时返回时间类型
 * @returns {String|Date}
 */
lishizhen.time.todayEndTime() // 2021-05-10 23:59:59
lishizhen.time.todayEndTime('yyyy-MM-dd') // 2021-05-10
lishizhen.time.todayEndTime(null) // Mon May 10 2021 23:59:59 GMT+0800 (中国标准时间)

data 本地存储相关方法

setData 设置本地存储 localStorage

/**
 * 设置本地存储 localStorage
 * @param {String} 要存储的key
 * @param {String|Object|Array} 要存储的value
 */
lishizhen.data.setData('name', '张三') // 存储字符串
lishizhen.data.setData('name', {name: '张三', age: 22}) // 存储对象
lishizhen.data.setData('name', ['张三', '李四']) // 存储数组

getData 获取指定key值数据 localStorage

/**
 * 获取指定key值数据 localStorage
 * @param {String} 要获取数据的key
 * @param {Any} 当获取的数据为空时,返回的默认数据
 */
lishizhen.data.getData('name') // 如果有值则返回存储的值,如果没有则返回 undefined
lishizhen.data.getData('name', '李四') // 如果有值则返回存储的值,如果没有则返回 李四

setSessionData 设置本地存储 sessionStorage

/**
 * 设置本地存储 sessionStorage
 * @param {String} 要存储的key
 * @param {String|Object|Array} 要存储的value
 */
lishizhen.data.setSessionData('name', '张三') // 存储字符串
lishizhen.data.setSessionData('name', {name: '张三', age: 22}) // 存储对象
lishizhen.data.setSessionData('name', ['张三', '李四']) // 存储数组

getSessionData 获取指定key值数据 sessionStorage

/**
 * 获取指定key值数据 sessionStorage
 * @param {String} key 要获取数据的key
 * @param {Any} def 当获取的数据为空时,返回的默认数据
 */
lishizhen.data.getSessionData('name') // 如果有值则返回存储的值,如果没有则返回 undefined
lishizhen.data.getSessionData('name', '李四') // 如果有值则返回存储的值,如果没有则返回 李四

setCache 缓存数据 localStorage

/**
 * 缓存数据 localStorage
 * @param {String} key 要存储的key
 * @param {String|Object|Array} value 要存储的value
 * @param {String|Number} time 数据的有效时间,单位秒
 */
lishizhen.data.setSessionData('name', '张三', 60) // 存储1分钟
lishizhen.data.setSessionData('name', {name: '张三', age: 22}, 60) // 存储1分钟
lishizhen.data.setSessionData('name', ['张三', '李四'], 60) // 存储1分钟

getCache 获取缓存数据 localStorage

/**
 * 获取缓存数据 localStorage
 * @param {String} key 要获取数据的key
 * @param {Any} def 当获取的数据为空时,返回的默认数据
 */
lishizhen.data.getCache('name') // 如果有值则返回存储的值,如果没有则返回 undefined
lishizhen.data.getCache('name', '李四') // 如果有值则返回存储的值,如果没有则返回 李四

cookie cookie相关方法

setCookie 添加cookie(别名addCookie)

/**
 * 添加cookie
 * objHours设置cookie存储时间,默认 0;表示浏览器关闭时cookie自动消失
 * @param {String} cookie名称
 * @param {String} 要存储的值
 * @param {Number} 要存储的时间 单位小时
 */
lishizhen.cookie.addCookie('name', '张三') // 浏览器关闭时cookie自动消失,这种cookie被叫做会话cookie
lishizhen.cookie.addCookie('name', '张三', 1) // 存储1小时

getCookie 获取cookie

/**
 * 获取cookie
 * @param {String} cookie名称
 * @return {String} key对应的值
 */
lishizhen.cookie.getCookie('name') // '张三'

delCookie 删除cookie

/**
 * 删除cookie
 * @param {String} objName
 */
lishizhen.cookie.delCookie('name')

mobile 移动端相关代码

rem 计算页面rem

/**
 * 计算页面rem
 * @param {Number} 设计稿宽度 默认750
 * @param {Function} 设置完根元素字号后的回调函数
 * @param {Boolean} 回调函数是否只执行一次 默认false
 */
// 默认设计稿宽为750px
lishizhen.mobile.rem(() => {
  console.log('页面尺寸发生了改变')
})

// 设计稿宽为1080px
lishizhen.mobile.rem(1080, () => {
  console.log('页面尺寸发生了改变')
})

// 设计稿宽为1080px 回调函数只执行一次
lishizhen.mobile.rem(1080, () => {
  console.log('页面尺寸发生了改变')
}, true)

wechatReload 刷新微信H5页面

/**
 * 解决微信端无法使用window.location.reload()刷新页面的方法
 */
lishizhen.mobile.wechatReload()

forceReLoad

/**
 * 解决微信IOS端H5页面返回后,页面不刷新的问题
 * 参考:https://segmentfault.com/a/1190000018768189
 */

os 返回手机系统

/**
 * 返回手机系统
 * @return {String}
 */
lishizhen.mobile.os() // 返回 android 或 ios

iosVersion 获取IOS版本号

/**
 * 获取IOS版本号
 * @return {Number} IOS版本号
 */
lishizhen.mobile.iosVersion() // 14.5

keyboardIsOpen(callback) 判断软键盘是否弹出

/**
 * 判断软件盘是否弹出
 * @param {Function} 弹出或关闭软键盘后的回调
 * @param {Boolean} 键盘收起后,是否恢复页面位置 默认false
 * @param {String} 要监听的系统 也可以设置 'android' 或 'ios' 默认 'all'全部监听
 * @return {Function} 返回注销函数句柄 一般在vue组件的销毁生命周期中调用
 */
let destroy = lishizhen.mobile.keyboardIsOpen(isOpen => { // 返回注销函数句柄 destroy
  console.log('键盘是否打开:' + isOpent) // true 或 false
})
destroy() // 注销监听

// 键盘收起后,恢复页面位置。在出现位置不正确的时候可以使用此参数
let destroy = lishizhen.mobile.keyboardIsOpen(isOpen => {
  console.log('键盘是否打开:' + isOpent) // true 或 false
}, true)

callNativeFunction 调原生的方法

/**
 * 调原生的方法
 * @param {String} 要调用的方法名
 * @param {Object} 要传递的参数
 */
lishizhen.mobile.callNativeFunction()

closeWindow 关闭当前窗口

/**
 * 关闭当前窗口
 * 兼容客户端的closeSelf 和 微信的wx.closeWindow
 */
lishizhen.mobile.closeWindow()

validate 公共验证规则

idCard 验证身份证号是否合法

/**
 * 验证身份证号是否合法
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.idCard('130106198601181811') // true
lishizhen.validate.idCard('123456789') // false

phone 验证手机号是否合法

/**
 * 验证手机号是否合法
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.phone('1513324118') // true
lishizhen.validate.phone('1111112222') // false

chinese 验证指定的内容是否都是中文

/**
 * 验证指定的内容是否都是中文
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.chinese('中国') // true
lishizhen.validate.chinese('abc') // false

postalCode 验证邮政编码是否合法

/**
 * 验证邮政编码是否合法
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.postalCode('050061') // true
lishizhen.validate.postalCode('999999') // false

email 验证指定的内容是否是email地址

/**
 * 验证指定的内容是否是email地址
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.email('rrr@xxx.com') // true
lishizhen.validate.email('abcdefg') // false

url 验证指定的内容是否是URL地址 - 地址必须以http/https/ftp/ftps开头

/**
 * 验证指定的内容是否是URL地址
 * 地址必须以http/https/ftp/ftps开头
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.email('http://www.baidu.com') // true
lishizhen.validate.email('https://www.baidu.com') // true
lishizhen.validate.email('ftp://www.baidu.com') // true
lishizhen.validate.email('ftps://www.baidu.com') // true
lishizhen.validate.email('abcdefg') // false

ip 验证指定的内容是否是IP

/**
 * 验证指定的内容是否是IP
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.ip('192.168.11.1') // true
lishizhen.validate.ip('192554112') // false

emoji 验证指定的内容是否包含emoji表情符

/**
 * 验证指定的内容是否包含emoji表情符
 * @param {String}
 * @return {Boolean}
 */
lishizhen.validate.emoji('Meanings 💁👌🎍😍') // true
lishizhen.validate.emoji('abcdefg') // false
lishizhen.validate.emoji('中国') // false

dessert 常用的小功能

goTop 平滑的返回到页面顶端

/**
 * 平滑的返回到页面顶端
 */
lishizhen.dessert.goTop()