npm 包 validator-models 使用教程

阅读时长 7 分钟读完

介绍

在前端开发中,我们经常需要对用户输入的数据进行验证。但是,手动编写验证函数比较繁琐,而且容易出错。为此,有很多开发者针对不同的验证场景,开发了各种验证工具库。其中,npm 上就有很多优秀的验证库,比如 validator.js、joi 等等。

而在众多验证库中,我比较喜欢 validator-models 这个库。因为它采用了模型的概念,使得验证规则更加灵活,易于维护和扩展。本文就对 validator-models 进行详细介绍,并提供使用案例以供参考。

安装

可以使用 npm 包管理器进行安装:

使用

使用 validator-models,我们需要先定义一个模型对象,然后添加一系列验证规则,最后调用验证方法进行验证。下面,我们来看一个简单的示例。

-- -------------------- ---- -------
----- ---------- - ---------------------------------------

-- ---- ---- ----- ---- - --- ----
--- ---- - -
    ----- ---
    ---- -
--

-- ------
--- ---- - -
    ----- -
        ----- ---------
        ---------- --
        ---------- --
    --
    ---- -
        ----- ---------
        ---- --
        ---- ---
    -
--

-- -- ---- ------
--- ----- - ---------------- ------

-- -------- -
    -------------------------------
-

以上代码中,我们定义了一个 user 模型,包含 name 和 age 两个属性。然后,我们定义了一个验证规则 rule,规定了 name 必须是字符串类型,长度在 1 到 10 之间,age 必须是数字类型,数值在 0 到 120 之间。

最后,我们调用 validation 方法进行验证。如果验证不通过,validation.errors 属性会包含错误信息。如果验证通过,validation.errors 属性为空数组。

验证规则

在定义验证规则时,我们可以使用以下属性:

  1. type:属性的数据类型。目前支持 string、number、boolean、array 和 object 五种类型。
  2. required:属性是否必填。如果设置为 true,那么属性值不能为空。
  3. minLength:字符串或数组的最小长度。
  4. maxLength:字符串或数组的最大长度。
  5. min:数字或日期的最小值。
  6. max:数字或日期的最大值。
  7. pattern:正则表达式模式。仅适用于字符串类型。
  8. enum:枚举值。属性值必须是枚举列表中的一个。

除了以上属性,我们还可以自定义验证规则。只需要在 rule 中添加一个自定义函数即可。例如:

以上代码中,我们定义了一个自定义规则,用于验证 name 属性是否为大写字母。在自定义函数中,返回值为 true 表示验证通过,返回值为 false 表示验证不通过。

数据来源

在实际应用中,我们往往需要从不同的数据来源中获取数据进行验证。例如,有时候我们的数据来自于表单提交,有时候是从数据库中查询到的数据,还有可能是外部接口传来的数据。

对于这种情况,validator-models 提供了两种解决方案:getter 和 adapter。

getter

getter 用于定义数据获取的方式。例如,在我们的示例中,数据来源是一个普通的 JavaScript 对象。那么,getter 就可以定义为一个函数,用于从对象中获取属性值。

以上代码中,我们定义了一个 getter 函数,用于从 user 对象中获取属性值。在调用 validation 方法时,将 getter 函数传入 options 参数中即可。

adapter

adapter 用于将数据转换为合适的格式。例如,在我们的示例中,需要将 age 属性从字符串类型转换为数字类型进行验证。那么,adapter 就可以定义为一个函数,用于将字符串转换为数字。

以上代码中,我们定义了一个 adapter 函数,用于将字符串类型的 age 属性值转换为数字类型。在调用 validation 方法时,将 adapter 函数传入 options 参数中即可。

扩展

虽然 validator-models 自带了很多验证规则,但有时候我们需要更丰富的验证规则。在这种情况下,我们可以通过扩展来实现。

validator-models 预留了一个 extend 方法,可以用于扩展规则。例如,我们想要增加一个验证规则,用于验证用户输入的手机号码格式是否合法。

-- -------------------- ---- -------
--- ---- - -
    ------ -
        ----- ---------
        ------ ----
    -
--

--- ------ - -
    ------ -------- ------- -
        ------ ----------------------------------------
    -
--

--- ----- - ---------------- ----- -------- ---------

以上代码中,我们创建了一个名为 extend 的对象,用于扩展验证规则。在 extend 对象中,我们为 phone 属性增加了一个自定义规则,用于验证手机号码格式。

消息国际化

validator-models 还提供了国际化支持,可以根据不同的语言环境输出不同的错误消息。要使用国际化功能,需要先定义一个 messages 对象,然后将其传入 validation 方法中。

-- -------------------- ---- -------
--- -------- - -
    -------- -
        --------- ---- -----
        ---------- -----------------
    --
    -------- -
        --------- ------- ----- --- -----
        ---------- ---- --- ---- ----- -- -- --- -----------
    -
--

--- ----- - ---------------- ----- ---------- --------------------

以上代码中,我们创建了一个名为 messages 的对象,用于存储不同语言环境下的错误消息。在调用 validation 方法时,将 messages["zh-cn"] 对象传入 options 参数中即可。

总结

以上就是 validator-models 的详细使用介绍。通过本文的学习,我们了解了 validator-models 的基本用法,以及如何扩展验证规则、使用消息国际化等高级功能。validator-models 是一个简单易用的 npm 包,可以帮助开发者快速编写高质量的前端验证代码,建议大家也可以尝试使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005629c81e8991b448dfc86

纠错
反馈