简介
@alifd/validate 是阿里前端团队出品的一个前端表单验证工具包,支持多种验证规则和自定义验证器。使用该工具包可以快速实现前端表单验证。
安装
@alifd/validate 可以通过 npm 安装:
npm install @alifd/validate
安装后,在项目中引入:
import { schema } from '@alifd/validate';
基本用法
@alifd/validate 的基本用法如下所示:
-- -------------------- ---- ------- ----- -------- - --------------- ----- --------------- --------- ---- --- ------ --------------- ------- -------- --------- ---- --- --------- --------------- ------- - ---- - -- --------- ---- --- --- ----- ------ - ------------------- ----- --- ------ ---------- --------- --------- --- -------------------- -- - ----- ----------- ------ -------- ------- --------- ---- ------ -
首先定义一个验证方案 mySchema,其中包含了若干个字段的验证规则。然后通过 mySchema.validate() 对表单数据进行验证,返回验证结果。若表单数据通过验证,则返回空对象。
验证规则
@alifd/validate 支持常见的验证规则,如字符串长度、数字范围、正则表达式匹配等。具体支持的验证规则如下:
required
: 必选字段enum
: 枚举值const
: 固定值format
: 字符串格式(email、date、url、ipv4、ipv6)length
: 字符串长度(min、max、range)pattern
: 正则表达式range
: 数字范围(min、max、range)type
: 数据类型(string、number、boolean、object、array、null、undefined)validator
: 自定义验证器
自定义验证器
除了新增支持的验证规则外,@alifd/validate 还支持自定义验证器,通过 validator() 方法实现。自定义验证器是一个函数,接收表单数据和当前字段值作为参数,返回验证失败时的错误信息。示例如下:
-- -------------------- ---- ------- ----- --------------- - ------- ------ -- - -- ------ --- -------- - ------ --------- ---- -- --------- - -- ----- -------- - --------------- ----- --------------- ---------- --------------- -- ---
上述示例中,自定义了一个验证器 customValidator,当 name 字段的值不为 'hello' 时,验证失败。
深度验证
当表单数据有多层结构时,@alifd/validate 支持深度验证,通过 schema.object() 实现。示例如下:
-- -------------------- ---- ------- ----- -------- - --------------- -------- --------------- ----- --------------- --------- ---- --- ------- --------------- --------- ---- -- -- --- ----- ---- - - -------- - ----- --- ------- -- - -- ----- ------ - ------------------------ -------------------- -- - -------- - ----- ----- ------- ---- - -
上述示例中,定义了一个 address 对象包含 city 和 street 字段。验证数据时,可以通过 schema.object() 实现深度验证,返回验证错误信息。
结论
本文介绍了在前端开发过程中常用的表单验证工具包 @alifd/validate,其性能稳定,提供了多种验证规则和自定义验证器实现,方便开发者快速实现前端表单验证。希望本文能对读者在前端开发中提供参考和帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedabf6b5cbfe1ea06108f5