The Message Validator Pattern

`async-validator` 是一个轻量级、功能强大的异步验证库,主要用于前端开发中对用户输入的数据进行校验。它支持同步和异步规则配置,并且易于集成到各种应用程序中,包括 Vue 和 React 等现代 JavaScript 框架。以下是关于 `async-validator` 的详细介绍: ### 基本特点 - **简单易用**:API 设计简洁直观,能够快速上手; - **多种内置规则**:提供丰富的预定义验证规则如必填项 (required)、最小长度(minLength)、最大长度(maxLength),正则表达式(pattern)等; - **自定义规则**:允许开发者创建复杂的业务逻辑作为验证条件; - **国际化支持**:可以轻松地为错误消息添加多语言翻译; - **异步验证能力**:通过 Promise 实现非阻塞的远程 API 校验等功能; ### 安装与引入 你可以使用 npm 或 yarn 来安装此库: ```bash npm install async-validator --save # 或者 yarn add async-validator ``` 然后在你的项目文件里按需加载模块: ```javascript import Validator from 'async-validator'; // 或者直接全局引用 const Validator = require('async-validator'); ``` ### 示例代码 下面是一个简单的例子来演示如何使用 `async-validator` 进行表单字段的有效性检查。 #### 同步验证示例 ```javascript let descriptor = { username: [ { required: true, message: "用户名不能为空" }, { type: 'string', min: 3, max: 10, message: "用户名长度应在3~10之间"} ], password: [ { required: true, message: "密码不能为空"}, { pattern: /^[A-Za-z\d]{6,}$/, message: "密码只能包含字母数字组合,最少六位"} ] }; let validator = new Validator(descriptor); validator.validate({ username: '', password: '' }, function(errors){ if (errors) console.log("验证失败:", errors); else console.log("验证成功!"); }); ``` #### 异步验证示例 当涉及到像邮箱可用性的实时检测这样的场景时,我们可以利用它的异步特性来进行操作。 ```javascript let descriptor = { email: [{ required: true, type: 'email', message: '请输入正确的电子邮件地址' }, { // 自定义异步验证函数 asyncValidator(rule, value, callback) { setTimeout(() => { if (!value || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) return callback(new Error('无效邮件')); // Simulate an AJAX call to check availability. fetch('/api/check-email?email=' + encodeURIComponent(value)) .then(response => response.json()) .then(data => { data.available ? callback() : callback(new Error('该电子信箱已被注册')) }) .catch(callback); }, 500); // simulate delay for demo purposes only } }] }; let validator = new Validator(descriptor); validator.validate({ email: '' }, function(errorMessages) { console.log(errorMessages); }); ``` ### 配置选项解析 | 参数 | 描述 | |---|---| | rule.required | 字段是否必需,默认 false | | rule.type | 数据类型的限定,比如 string, number, object, array, boolean, enum, integer, float, method, regexp, date 等 | | rule.message | 错误提示信息模板字符串 | | rule.pattern | 正则表达式的实例或者源码串形式 | | rule.min/max | 数字型数据范围限制 | | rule.len | 字符串或数组的最大长度 | 除了上述提到的基础设置外还有更多高级配置可供探索,具体详情参阅[官方文档](https://github.com/yiminghe/async-validator/blob/master/API.md).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值