validate-plus
简单、易用、可扩展的参数校验工具
安装
npm i validate-plus -S
如何使用
const valid validTc addValidRule =
validate-plus
提供了三个方法 valid
, validTc
, addValidRule
-
valid
和validTc
方法用于校验数据,区别在于如果校验失败,valid
方法会返回失败提示信息,validTc
方法会将失败的提示信息包装成 error 抛出;除此之外,valid
和validTc
方法无任何区别,两个方法接收的参数都完全相同 -
addValidRule
用于添加自定义校验规则,详见 添加自定义规则
valid 方法使用
校验失败时, valid
方法会直接返回校验失败的提示信息,你需要用一个变量接收他,根据是否有返回值判断校验是否通过
const obj = name: 'Slient' const validResultMsg = ; if validResultMsg return this$message
validTc 方法使用
校验失败时会抛错一个错误,错误信息就是校验失败的提示信息,你需要通过 try.catch 捕获这个错误
const obj = name: 'Slient' try ; catch err return this$message
valid & validTc 校验方法说明
由于 valid 和 validTc 方法入参(接收两个参数)完全一样,以下均已 valid 方法为例演示用法(省略了返回值判断)
参数说明
-
第一个参数:下称 规则对象 (必传)
规则对象由要校验的字段名称和需要用到的规则数组(对同一字段可进行多种校验)组成
-
第二个参数:下称 校验对象 (必传)
校验对象是要校验的数据,会根据规则对象中的字段进行匹配校验,如规则对象添加了对 a、b 字段的校验,而校验对象中含有 a、b、d 字段,那么 d 字段不会被校验
即只会对规则对象中指定的字段进行校验
使用说明
-
只传入规则名,使用默认的失败提示文案
const obj = name: 'Slient'; -
传入规则名并指定失败提示文案
const obj = name: 'Slient';//可组合使用; -
冒号表达式
也许你已经发现了,有些规则名中存在冒号
是的,这里我们规定,冒号前面的是规则名,后面的是校验目标,协助我们对传入的值进行校验
我们的一些校验规则是需要用到冒号表达式的,具体请看内置规则,这里以枚举 enum 和相等 equal 为例演示用法
const obj = role: 2 score: 99// enum 是枚举规则名,冒号后面是序列常量// equal 是相等(全等)规则名,冒号后面是参照目标;
内置规则
我们内置了 10 种校验规则,基本能满足一般校验场景,如需自定义规则,参见添加自定义规则
规则名 | 释义 | 使用案例 |
---|---|---|
required | 校验非空 | valid({ name: [ 'required' ] }, { name: 'Slient' }); |
regexpPhone | 校验手机号 | valid({ phone: [ 'regexpPhone' ] }, { phone: 15088888888 }); |
regexpEmail | 校验邮箱 | valid({ email: [ 'regexpEmail' ] }, { email: '163.com' }); |
minLength | 校验最小长度 | valid({ password: [ 'minLength:8' ] }, { password: '123aaa' }); |
maxLength | 校验最大长度 | valid({ password: [ 'maxLength:10' ] }, { password: '123aaa' }); |
enum | 校验值是否匹配其一 | valid({ role: [ 'enum:[3,6,9]' ] }, { role: 3 }); |
equal | 校验值是否相等 | valid({ score: [ 'equal:100' ] }, { score: 99 }); |
type | 校验是否是目标类型 | valid({ age: [ 'type:number' ] }, { age: '十八' }); |
min | 校验最小值 | valid({ age: [ 'min:1' ] }, { age: 0 }); |
max | 校验最大值 | valid({ age: [ 'max:1000' ] }, { age: 1001 }) |
添加自定义规则
如果内置规则不能满足需求,我们也可以添加自定义规则,包提供了扩展校验规则的能力,你只需要调用 addValidRule
方法就能很容易的添加一条自定义规则
addValidRule
方法接受三个参数
- 第一个参数是规则名称(必传)
- 第二个参数是校验函数(必传)
- 第三个参数是校验失败的默认提示信息(非必传)
添加普通规则
普通规则的校验函数接收两个参数,参 1 是需要校验的值,参 2 是校验失败的提示信息
// 判断密码是否符合规则(数字字母混合且不小于 6 位字符) const obj = password: 'abc' ;
添加冒号表达式规则
冒号表达式规则的校验函数接收三个参数,参 1 是需要校验的值,参 2 是校验目标,参 3 是校验失败的提示信息
// 判断输入的字符知否以指定字符开头 const obj = password: 'abdeee' ;
完整案例
const valid validTc addValidRule = methods: { const obj = name: 'slient' age: 9 role: 9 password: '12345' const validResult = if validResult return this$message // ... }
如何在 egg 应用中使用这个包
针对 egg 应用,或许你可以了解一下 egg-validate-plugin
egg-validate-plugin
是当前校验包针对 egg 应用的插件版,如果你已了解 validate-plus
,那么只需 3 分钟即可上手 egg-validate-plugin
,了解更多请走传送门 egg-validate-plugin
提问交流
请到 egg issues 异步交流。