前言
随着前端技术的发展,JavaScript 逐渐成为一种在 Web 开发中不可或缺的语言。在 Web 开发中,我们常常需要对用户传入的信息进行验证。在传统的开发中,我们会自己手动去实现验证函数,这样不仅费时费力,还容易出现漏洞。
随着 npm 包管理工具的兴起,一些优秀的第三方验证库应运而生,例如 engined-validator。本文将详细介绍 engined-validator 包的使用方法,并提供示例代码。
什么是 engined-validator
engined-validator 是一款 JavaScript 语言编写的验证库,可以方便地进行表单验证,支持浏览器和 Node.js 环境。该库主要特点如下:
- 体积小:仅 4KB,不会对项目的性能造成影响。
- 验证规则丰富:支持常用的验证规则,如必填、邮箱、手机号等。
- 可扩展性强:可以自定义新的验证规则,方便根据项目需求进行扩展。
- 错误提示友好:默认的错误提示符合常规的文字表述,也可以自定义错误提示语句。
快速开始
安装
你可以通过 npm 来安装 engined-validator:
npm install engined-validator --save
或者直接通过 CDN 引入:
<script src="https://cdn.jsdelivr.net/npm/engined-validator"></script>
使用
在代码中引入 engined-validator:
// CommonJS 风格 const Validator = require('engined-validator') // ES Module 风格 import Validator from 'engined-validator'
在实际的应用中,你需要先定义规则集合对象,再调用验证方法验证数据是否符合要求:
-- -------------------- ---- ------- -- -------- ---- --- ---- - - ------ - - --------- ----- -------- -------- -- - ----- -------- -------- --------- -- -- ------ - - --------- ----- -------- --------- -- - ----- -------- -------- ---------- -- -- - -- ------ ---- ------ --- ---- - - ------ ---------------- ------ -------------- - --- --------- - --- --------------- -------------------------------- -- - ------------------- -------------- -- - ------------------ --
上面的代码中,我们定义了一个规则集合对象 rule,包含了 email 和 phone 两个输入框的验证规则。 Validator
类接受一个规则集合对象作为参数。 validate
方法接受一个待验证数据对象,会返回一个 Promise。当数据验证通过时,Promise 马上 resolve。否则返回一个 reject,具体的错误信息存储在 error 对象的 errors 属性中。
规则集合对象的配置和扩展
规则集合对象 rule 是一个键值对,其属性名通常是表单元素的名称,属性值是一个包含验证规则的数组。每个验证规则对象中至少包含一个验证属性和一条错误提示信息。常用的验证属性有:
required
:必填项。type
:数据类型。min
:最小值。max
:最大值。len
:长度。pattern
:正则表达式。custom
:自定义函数验证。
除了上面列出的验证属性之外,您还可以根据需要定义自己的验证对象。例如,要验证一个字符串是否是特定长度的字符串,可以定义一个新的验证对象 exact
,如下所示:
Validator.addRule('exact', (value, limit) => { return value.length === limit }, (limit) => `此字段应该是 ${limit} 个字符`)
addRule
方法接受三个参数:
ruleName
:验证规则名称。validator
:用于验证值的函数,函数应该接受至少一个参数,即要验证的值。如果验证通过,返回 true;否则返回 false。除了值之外,验证函数可以接受任意数量的其他参数;这些参数将传递给addRule
方法的第三个参数。message
:用于描述错误的字符串或用于动态生成错误的函数。如果要动态生成消息,请使用函数格式,并将其作为规则对象的message
属性值。
我们可以将刚刚定义的 exact
对象添加到 rule 中:
let rule = { username: [ { required: true, message: '用户名不能为空' }, { exact: 10, message: '用户名应该是 10 个字符' }, ], }
这样就可以在表单中使用 exact
规则进行验证了。
组合验证规则
在表单验证中,通常需要同时验证多项内容。为了方便起见,engined-validator 还提供了 and
和 or
两个组合规则,可以将多个规则组合在一起。例如:
-- -------------------- ---- ------- --- ---- - - --------- - - --------- ----- -------- -------- -- - ------- --- ---- -------- -------------- - -- --------------- - - --------- ----- -------- --------- -- - ------ ----------- -------- ------------ -- - - --- ---- - - --------- ----------- --------------- ----------- - --- --------- - --- --------------- -------------------------------- -- - ------------------- -------------- -- - ------------------ --
上面的代码中,我们使用 equal
规则将 repeatPassword
的值与 password
的值进行比较。equal
规则需要一个字符串类型的参数,用于指定进行比较的字段名。在这个例子中,我们指定了 password
作为比较的字段名。
我们还可以使用 and
和 or
规则,将多个规则组合在一起:
-- -------------------- ---- ------- --- ---- - - --------- - - --- -- --------- ---- -- - ----- -------- --- -------- ---------------- - - - --- ----- - - --------- --- - --- ----- - - --------- ---- - --- --------- - --- --------------- --------------------------------- -- - ------------------- -------------- -- - ------------------ -- --------------------------------- -- - ------------------- -------------- -- - ------------------ --
上面的代码中,我们使用 or
规则将 required
和 type
两个规则组合在一起,一旦满足其中一个规则,验证通过。这里的验证规则表示,greeting
字段不能为空或必须为字符串类型。
自定义错误提示
engined-validator 默认的错误提示信息可能不符合你的项目需求,因此我们可以通过传递第三个参数来自定义错误提示信息。当然,还可以通过 setOptions
方法全局设定错误提示信息:
let validator = new Validator(rule, {}, { default: '此字段验证不通过', required: '此字段不能为空', })
setOptions
方法接受一个对象作为参数,可包含以下属性:
default
:默认的错误提示信息。required
:必填项的错误提示信息。- 其他:其他验证规则的错误提示信息。
总结
以上就是 engined-validator 的用法和配置,通过学习本文,你将会对表单验证有更深的了解,进而提高前端项目的开发效率。engined-validator 是一个简单易用,性能不错的验证库,希望能够为你的项目或产品带来帮助和提升。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ec181e8991b448dc839