npm包@absolunet/joi使用教程

阅读时长 6 分钟读完

前言

前端开发中,经常需要对用户传入的参数进行校验处理,常见的参数校验如验证手机号格式是否正确,密码是否符合规范等,这时候我们需要使用到一些验证库。

本文将介绍一款npm包@absolunet/joi,它是一款功能非常强大的验证库,支持多种类型和自定义验证规则,使用简单,下面进行详细说明。

安装

使用npm命令进行安装:

入门

载入模块

在代码中载入模块:

验证字符串

以验证邮箱为例,代码如下:

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

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

以上代码中,我们定义了一个字符串类型的校验规则。使用email方法来说明需要校验的是邮箱格式,minDomainSegments参数是指邮箱后缀的最小级别,例如com和cn的级别都是最低的一级。使用required方法说明这个校验规则是必填项。

接着将待校验的邮箱字符串传入schema.validate()方法进行校验。如果返回的error不为空,说明校验失败,可以从error.details中获取失败信息;反之,校验成功。

验证数字

以验证年龄为例,代码如下:

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

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

以上代码中,我们定义了一个数字类型的校验规则。使用integer方法说明需要验证整数型,再使用min和max方法来限制年龄的范围。

验证对象

以验证用户信息为例,代码如下:

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

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

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

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

使用Joi.object()定义了一个对象的验证规则,其中name, age, email字段分别使用Joi.string(), Joi.number(), Joi.string()进行验证,每个字段均指定了必填项,且对输入范围有了限制。

将待校验的user对象传入userSchema.validate()方法进行校验,如果返回的error不为空,说明校验失败,可以从error.details中获取失败信息;反之,校验成功。

自定义校验规则

有时我们需要自定义一些校验规则,例如验证身份证号,如下:

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

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

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

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

上述代码中,我们使用Joi.extend()方法来进行自定义验证规则的定义。

使用type指定要自定义验证的类型,在这里我们指定为idcard;base指定要基于哪种类型进行扩展,根据身份证号的特点,我们使用了string类型进行扩展;messages可以指定自定义错误信息,这里我们指定了'idcard.format'错误信息;validate方法是实际的验证过程,当满足特定验证规则时,返回value,否则返回错误信息。

可以结合上述示例,对自定义的校验规则进行进一步探究。

小结

本文主要介绍了一款功能非常强大的验证库@absolunet/joi,包括常见类型的使用方法,自定义校验规则及其应用。使用本库能够大大简化前端表单验证流程。

参考资料

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