0.7.7 • Published 4 years ago

js-vfn v0.7.7

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

可供验证的函数

安装

npm i js-vfn -S

结构

const VFn = require('vfn');

// 定义
const foo = new VFn({
  params: {
    // 通用校验, 默认内置 number / string / object / array 等
    p1: {
      type:'number',
      required:true,    // required 默认为 false
    },
    p2: {
      type:'object',
      nullable:false,   // object & string & array 支持非空校验, 默认 true
      children: {       // object & array 支持子类校验
        c1: { type:'number', /* ... */ }, // 精确校验,
        '*': { type:'string',  }    // 通用校验, 非精确匹配的参数都会走这个校验

        // 数组的子项校验, children 支持嵌套
        // 与对象的子项校验(以key为锚)不同, 数组的子项以 index 为判断依据
        // 如下, 校验只定义了2个, 假设传进来的子项大于2, 那多余出来的部分都会以最末存在的校验器去校验
        arr: { type:'array', nullable:false, children:[
          { type:'number', reg:/[7-9]/ },
          { type:'string' }
        ] },
      }
    },
    // 自定义校验
    p3: {
      type:'mobile',
      reg:/^1[3-9]\d{9}$/,        // 支持正则, 如果传入正则, 会覆盖默认的 validate
      validate: function(val) {   // 支持自定义校验函数, 如果和正则同时存在, 则仅使用正则
        return false;
      },
      message:'手机号码不对噢'      // 支持自定义报错信息
    },
    p4: {
      type:'number+',
      gt:5,
      lt:1,
      bt:[3,5],
      validate: {
        gt: function(val) { val > this.gt },
        lt: function(val) { val < this.lt }
        bt: function(val) { val > this.bt[0] && val < this.bt[1] }
      },
      message: {
        gt: '${PARAM} 必须大于 ${gt}',
        lt: '${PARAM} 必须小于 ${lt}',
        bt: '${PARAM} 必须介于 ${bt} 之间',
      }
    }
  },
  entry(args) {
    const { p1,p2,p3 } = args;
    // 把校验相关都放到 params 里
    // entry 里可以只专注业务代码
    ...doSomething
  }
});

// 使用
// 注: 因为校验的时候使用的键值对, 所以在使用的时候也需要定义键值对, 而非普通的 foo(1,{},'13131313131');
foo({ p1:1, p2:{}, p3:'13131313131' });
0.7.7

4 years ago

0.7.6

4 years ago

0.7.5

4 years ago

0.7.2

4 years ago

0.7.4

4 years ago

0.7.3

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago