以验证对象属性为例,直接上代码,文字少 了还不让发。多写几个字。。。。
/* 使用示例
创建实例
const v = new validator()
添加验证
v.add('requrid', '1', '用户名不能为空')
v.add('minLength', 'aaa2', 4, '最小位数为4位')
添加自定义验证
v.add('custom', 'aaa2', (v) => {
if(v === "aaa2") {
return {status: false,msg:'密码不是能是aaa2'}
} else {
return {status: true}
}
})
开始验证
Promise.resolve().then(() => {
v.start()
}).then(() => {
console.log('通过验证')
}).catch(err => {
console.log(err.message)
})
*/
const DICT = {
required: (val, msg) => {
if(val){
return {status: true, msg}
}
return {status: false, msg}
},
minLength:(val, len, msg) => {
if(val && val.length < len) {
return {status: false, msg}
}
return {status: true, msg}
}
}
export default class validator {
constructor() {
this.arr = []
}
add(...args){
const [key, ...ops] = args
if(DICT[key]) {
this.arr.push(() => {
return DICT[key](...ops)
})
} else if(key === 'custom') {
const[value, fun] = ops
this.arr.push(() => {return fun(value)})
}
}
start(){
for(let i = 0; i<this.arr.length; i++) {
const res = this.arr[i]()
if(!res.status) {
this.arr = []
throw new Error(res.msg)
}
}
this.arr = []
return Promise.resolve()
}
}版权声明:本文为qq_22936647原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。