npm 包 @hapi/joi 使用教程

阅读时长 6 分钟读完

在前端开发中,常常需要对用户输入的数据进行验证。此时,一个好用的数据验证工具可以大大提高开发效率和代码质量。@hapi/joi 就是一个优秀的数据验证 npm 包,它提供了许多常见的数据验证规则和自定义验证规则的功能,同时也支持多语言字符串和自定义错误信息。本文将介绍如何使用 @hapi/joi 并提供一些示例代码。

安装

在使用 @hapi/joi 之前,你需要先将它安装到你的项目中。你可以使用 npm 命令行工具来完成安装。

基本使用

@hapi/joi 的基本用法很简单,只需要根据需要的验证规则调用相应的函数即可。这些函数都返回一个 joi 对象,你可以在这个对象上继续调用其他的函数来添加更多的验证规则。

下面是一个示例,我们将使用 @hapi/joi 来验证一个用户输入的字符串是否符合指定格式:

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

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

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

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

在上面的代码中,我们使用 @hapi/joi 的 .string() 函数来指定要验证的数据类型为字符串,.alphanum() 函数来指定只包含字母和数字,.min() 函数来指定最小长度为 3,.max() 函数来指定最大长度为 30,.required() 函数来指定输入为必填项。然后,我们使用 .validate() 函数来验证数据,如果验证不通过,则可以使用 result.error.details[0].message 来获取错误详细信息,在实际开发中可以根据需要进行相应的处理。

更多验证规则

除了基本的验证规则外,@hapi/joi 还提供了许多其他的验证规则,比如:

  • number():验证数字类型。
  • boolean():验证布尔类型。
  • date():验证日期类型。
  • array():验证数组类型。
  • object():验证对象类型。
  • email():验证邮箱格式。
  • uri():验证 URI 格式。
  • ip():验证 IP 地址格式等等。

同时,@hapi/joi 也提供了可以组合使用以上规则的方法,比如:

  • .strict():强制验证值是否是预期类型。
  • .forbidden():阻止出现某些键。
  • .unknown():允许对象包含未知键。
  • .when(condition, options):根据条件添加验证规则。
  • .with(key, peers):验证输入对象的两个或多个属性是否一同出现等等。

自定义验证规则

如果 @hapi/joi 提供的验证规则无法满足你的需求,你可以使用 .custom() 函数来自定义验证规则。 .custom() 函数可以接受一个函数作为参数,这个函数返回一个错误信息或者 undefined 。

下面是一个示例,我们将使用 @hapi/joi 来自定义验证一个手机号码:

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

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

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

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

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

在上面的代码中,我们首先使用 @hapi/joi 定义了一个手机号码验证规则,然后我们使用 .custom() 函数来自定义验证规则。在自定义函数中,我们首先使用正则表达式来验证电话号码的格式是否正确,如果通过了验证,就返回电话号码本身,否则返回一个错误提示信息。

多语言字符串和自定义错误信息

@hapi/joi 不仅支持多语言字符串,还可以为验证规则定义自定义的错误信息。如果有多个验证规则,则错误信息的定义也可以是数组。

下面是一个用法示例:

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

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

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

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

在上面的代码中,我们首先定义了验证规则,然后使用 .messages() 函数为其自定义了错误信息。需要注意的是,错误信息中可以使用占位符({#limit})来替换数据验证规则中的相关变量。我们妥善的为每个字段定义了自己的错误信息,提高了程序的健壮性。

总结

在本文中,我们介绍了 @hapi/joi 包的基本使用、常用验证规则、自定义验证规则、多语言字符串和自定义错误信息等内容。相信通过本文的介绍,你已经对如何使用 @hapi/joi 进行数据验证有了深入的了解。同时,我们也可以发现,使用 @hapi/joi 能够大大提高前端开发中数据验证的效率和规范性,帮助开发者编写高质量的代码。

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