veal

a common tool library

Usage no npm install needed!

<script type="module">
  import veal from 'https://cdn.skypack.dev/veal';
</script>

README

veal

a common tool library

Provide web service API and common function

core

  • regexp
export const regexp = {
    number: /^[0-9]*\.?[0-9]*$/, // 数字
    float: /^(-?\d+)(\.\d+)?$/, // 浮点数
    zh: /^[\u4e00-\u9fa5]{0,}$/, // 汉字
    mobilePhone: /^(13[0-9]|14[0-9]|15[0-9]|166|17[0-9]|18[0-9]|19[8|9])\d{8}$/, // 手机号
    telPhone: /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/, //  固定电话
    email:/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ // 邮箱
}
  • formatDate

(data:(string|number),fmt:string?)=> string

将时间戳格式化为日期字符串

  • dateToStamp

(str:string,len:number=10?)=> number

将日期字符串转换为时间戳

  • deepClone

(source:object)=> object

深拷贝

  • sublen

(value:string,len:number=8?)=> string

字符串截取

  • fixedTo

(val:(string|number),len:number=4?)=> number

四舍五入保留n位小数

  • delayFn

(fn, delay, mustDelay)=> function


/**
 * 函数节流
 * @param fn 需要被节流的函数
 * @param delay 触发执行的时间间隔
 * @param mustDelay 必然触发执行的间隔时间
 * @returns {*}
 */
  • isFunction

(target:any)=> boolean

判断是不是函数

  • isPlainObject

(target:any)=> boolean

判断是不是字面量对象

  • mergeOptions

(l:plainObject,r:plainObject)=> plainObject

深度合并对象

  • compose

(...rest:Array)=> function

函数管道

  • curry

(function)=> function

柯里化函数工厂

  • urlEncode

(target:plainObject)=> string

转换对象为uri参数字符串

http

  • createFetch

(hof:function?)=> Fetch

fetch 工厂

  • applyMiddleware

(...middleware:Array?)=> (Fecth|any)

中间件加载器

http middlewares

  • log

日志中间件

  • methods

基础http方法中间件(会改变fetch的默认行为 生成一个 包含{get,post,del,put}方法的对象)

NOTE: 如果使用methods中间件,methods必须是applyMiddleware的第一个参数,因为methods会改变fetch的默认行为

  • filter

(errorHandler=()=>{}?,chain=(response)=>{/.../}?)=> middleware

errorHandler:error=>void 错误处理方法

chain:response=>Promise 自定义数据处理

  • headers

(headers:plainObject)=>middleware

设置headers

demo

// base
const fetch = createFetch();

// advanced
const fetch = createFetch(applyMiddleware(methods,filter(),log));

math

math.strip(0.09999999999999998); // = 0.1
math.plus(0.1, 0.2);             // = 0.3, not 0.30000000000000004
math.plus(2.3, 2.4);             // = 4.7, not 4.699999999999999
math.minus(1.0, 0.9);            // = 0.1, not 0.09999999999999998
math.times(3, 0.3);              // = 0.9, not 0.8999999999999999
math.times(0.362, 100);          // = 36.2, not 36.199999999999996
math.divide(1.21, 1.1);          // = 1.1, not 1.0999999999999999
math.round(0.105, 2);            // = 0.11, not 0.1

vue

  • Vue.prototype.$_util

core挂载入口

  • Vue.prototype.$_math

math挂载入口

  • Vue.filters

core挂载

components

  • Cache
{
  props: {
         keys: { // cache keys
             type: Array,
             default: () => []
         }
     }
 }