README
Validator
简介
- 在线demo先看一眼
Validator
是数据集验证工具,主打多个规则以管道符模式进行串行校验,常用于表单数据繁琐的校验- 用最少的代码,解决繁琐的事情
- 支持校验规则扩展、单例模式、异步校验
- 打包后体积
6.5 KB
,Gzip 后体积2.5 KB
- 规则快速预览:
required|email|length:8|between:2,8
安装
# npm
$ npm i @xuanmo/validator
# yarn
$ yarn add @xuanmo/validator
# pnpm
$ pnpm add @xuanmo/validator
使用
import validator from '@xuanmo/validator'
// 默认不注册多语言,需要引入多语言文件自行注册
import zhCN from '@xuanmo/validator/locale/zh-CN.json'
// 注册多语言
validator.localize(zhCN)
// 执行校验
validator
.validate({
name: {
value: 'xuanmo',
rules: 'required|max:5'
},
age: {
value: 18,
rules: 'max:8'
},
scope: {
value: '',
message: '局部校验规则失败',
validator() {
return false
}
}
})
.then(() => {
console.log('校验通过')
})
.catch((error) => {
console.log(error)
})
API
关键词说明
message
{#field}
会被替换为当前字段{meta}
具体规则的值ruleParams
多个值通过,
逗号分隔
// 以 `length` 规则为例,错误信息定义:{#field}长度必须为:{length}
// 最终执行结果被替换为:name长度必须为:5
validator.validate({
name: {
value: 'xuanmo',
rules: 'length:5'
}
})
validate 执行校验
import validator from '@xuanmo/validator'
validator.validate({
name: {
value: 'xuanmo',
rules: 'length:5|between:2,8'
},
scope: {
value: 'xuanmo',
// 局部校验规则,优先级最高,不会执行 rules 模式
validator(value) {
return false
}
}
})
/**
* validate TS 类型说明
* @param data 校验数据
* @returns Promise<true | ValidateErrorType> 校验通过 resolve(true),失败在 catch 中获取错误信息
*/
type validate = (data: ValidateDataModel) => Promise<true | ValidateErrorType>;
localize 多语言注册
import zhCN from '@xuanmo/validator/locale/zh-CN.json'
validator.localize(zhCN)
注册校验规则
extend 单个注册
validator.extend('custom', {
message: '{#field}自定义校验规则失败:{custom}',
validator(value, ruleValue) {
return (value as string).length > +ruleValue!
}
})
extends 多个规则同时注册
validator.extends({
regexp: {
message: '正则校验失败信息',
regexp: '\\d+'
},
custom: {
message: '{#field}自定义校验规则失败:{custom}',
validator(value, ruleValue) {
return (value as string).length > +ruleValue!
}
}
})
rules 内置规则
required
必填校验email
邮箱length
长度,示例:length:2
min
最小值,示例:min:5
max
最大值,示例:max:5
number
数字,包含浮点数、整数float
浮点数integer
整数between
数值区间
单例模式
import { Validator } from '@xuanmo/validator'
import zhCN from '@xuanmo/validator/locale/zh-CN.json'
const validator = new Validator()
validator.localize(zhCN)