开源软件名称:psv
开源软件地址:https://gitee.com/GTchao555/psv
开源软件介绍:
Porco Schema Validate (psv)(自2.1.7版本之后,数组的定义改变,支持数组嵌套) psv 是一款轻量级 js 数据格式验证工具,相比于其他功能齐备的验证工具,psv 的优势在于体积非常小(之所以要写它,就是因为对其他 validate 框架不满意,我只是想要一个格式化验证工具,却给我一个 1M 的项目),最开始的核心代码只有 130 行。 下载、安装使用首先你需要定义出自己的 schema,比如: var schema = { str: { type: String, // string 类型 required: true, // 是否必填,默认为 false max: 3, // 最大长度 min: 2, // 最小长度 enum: ['12', '13', '14'], // 枚举 regex: '^[8-9]*$', // 正则 // 正则(兼容老版本,不推荐使用,优先级低,当它与 regex 同时出现时会被忽略) pattern: '^[5-9]*$', error: { // 自定义错误提示 type: '类型错误', required: '必填错误', max: '不能超过最大长度', min: '不能低于最小长度', enum: 'enum 必须正确', regex: '正则验证错误', pattern: '正则验证错误', } }, num: { type: Number, required: true, max: 3, // 最大长度 min: 1, // 最小长度 enum: [1, 2, 3], // 枚举 error: { // 自定义错误提示 type: '类型错误', required: '必填错误', max: '不能超过最大值', min: '不能低于最小值', enum: 'enum 必须正确', }, }, boo: { type: Boolean, required: true, error: { // 自定义错误提示 type: '类型错误', required: '必填错误', }, }, arr: { type: Array, required: true, max: 3, // 最大长度 min: 2, // 最大长度 error: { // 自定义错误提示 type: '类型错误', required: '必填错误', max: '不能超过最大长度', min: '不能低于最小长度', }, }, obj: { type: Object, required: true, error: { // 自定义错误提示 type: '类型错误', required: '必填错误', }, }}; schema 是预先定义的数据格式,接下来将会拿 data 与 schema 进行比对,对于一个 schema 来说只有 type 字段是必填的,其他都可以缺省。 var data = { str: '12', num: 2, boo: true, array: [1, 2], obj: {},} 接着我们导入并创建 Psv 对象进行验证 import Psv from 'psv';function testPsv(schema, data) { const psv = new Psv(schema, data); const validate = psv.validate(); if (!validate) { psv.printErrors(); }} api数据类型 - String
- type
- default // 默认值
- trim // 去除数据两边空格,默认 false
- required
- max
- min
- enum
- regex
- pattern
- error (自定义错误提示,可使用默认值)
- type (type 错误提示信息)
- required (required 错误提示信息)
- max (max 错误提示信息)
- min (min 错误提示信息)
- enum (enum 错误提示信息)
- regex (regex 错误提示信息)
- pattern (pattern 错误提示信息)
- Number
- type
- default
- required
- max
- min
- enum
- error
- Array
- type
- default
- required
- max
- min
- error
- Boolean
- Object
函数 - validate // 验证入口
- printErrors // 打印错误信息
- getErrors // 获取错误信息
注意:当 type = Object 时,说明该字段可以是任何 js 基本类型或对象,甚至可以是 一个 函数(慎用)。4.1.0 之后,全面支持 default 默认值,default 可以是任何值,String 添加 trim 去空格支持。default 以及 trim 都支持无限嵌套const schema = { key1: { type: String, default: '123', }};const data = {};const psv = new Psv(schema, data);const res = psv.validate();// data.key1 === '123' const schema = { key1: { type: String, trim: true, }};const data = { key1: ' 123'};const psv = new Psv(schema, data);const res = psv.validate();// data.key1 === '123' 同样,psv 支持嵌套定义 const schema2 = { str2: { type: String, required: true }}const schema = { str1: { type: schema2, required: true },}; (如果对使用有疑问,可以参考 test 目录下代码) |
请发表评论