npm包@absolunet/joi使用教程

前言

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

本文将介绍一款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


猜你喜欢

  • npm 包 @nestjs/typeorm 使用教程

    @nestjs/typeorm 是 NestJS 中 TypeORM 集成模块。在 NestJS 中使用 TypeORM 极大地简化了与数据库交互的逻辑。本文将介绍如何使用 @nestjs/typeo...

    5 年前
  • npm 包 @nestjs/testing 使用教程

    介绍 NestJS 是一款基于 Node.js 的开源框架,它可以帮助我们更方便地创建可扩展的、模块化的、易于维护的 Web 应用程序。@nestjs/testing 是 NestJS 框架提供的一个...

    5 年前
  • npm 包 @lxdhub/db 使用教程

    简介 @lxdhub/db 是一个针对 LXD 容器的数据库接口。它提供了一些常用的功能,如:容器的增删改查和状态查询等,方便我们进行容器管理。 安装 在使用之前,我们需要先安装 @lxdhub/db...

    5 年前
  • npm包@lxdhub/common使用教程

    一、什么是npm包? npm(Node Package Manager)是一个包管理工具。它可以让你发布、共享和安装代码包(即npm包)。 npm包可以包含JavaScript代码、CSS样式表、图片...

    5 年前
  • npm 包 koa-log 使用教程

    随着前端技术的发展,越来越多的服务器端程序也采用了 JavaScript 作为开发语言。而在服务器端开发中,常常需要使用日志来记录程序运行的各种信息,如请求信息、错误信息等等。

    5 年前
  • npm 包 hubot-forecastio 使用教程

    在前端开发中,我们经常需要处理天气相关的数据。而 Forecast.io 提供了丰富的气象数据和 API 接口,可以方便我们在项目中使用。本文将介绍如何使用 npm 包 hubot-forecasti...

    5 年前
  • npm包@koa/cors使用教程

    简介 @koa/cors 是一个 Koa 中间件,用于添加 CORS 头信息以允许跨域请求。CORS(Cross-Origin Resource Sharing)是一种安全机制,它允许来自不同域名或端...

    5 年前
  • npm 包 virtual-exchange-market 使用教程

    概述 在前端开发中,经常需要使用到各种各样的 npm 包来完成特定的功能。其中一个非常实用的 npm 包是 virtual-exchange-market,它可以帮助我们快速搭建虚拟的交易市场。

    5 年前
  • NPM 包 ZCL-Packet 使用教程

    在前端开发中,我们经常需要处理二进制数据包,而 zcl-packet 是一个帮助我们处理 ZigBee Cluster Library (ZCL) 协议数据包的 Node.js 包。

    5 年前
  • npm 包 cc-znp 使用教程

    有时候在我们开发前端项目时需要用到一些比较复杂的功能,这时候我们可以选择使用 npm 包。在这篇文章中,我们将重点介绍一个叫做 cc-znp 的 npm 包,并提供详细的使用教程和示例代码。

    5 年前
  • npm 包 zigbee-bridge-znp 使用教程

    前言 随着人们生活水平的不断提高,智能家居产品也变得越来越普及。Zigbee 作为智能家居中常见的协议之一,被广泛应用于智能灯具、智能门锁、电动窗帘等场景。 如果想要开发一个 Zigbee 设备,我们...

    5 年前
  • npm 包 zstack-constants 使用教程

    简介 在前端开发中,我们经常会使用一些 npm 包来简化代码编写,提高效率。其中,zstack-constants 是一个在 ZigBee 联盟标准中常用的常量集合库,包含了很多常用的常量和枚举类型。

    5 年前
  • npm 包 lwm2m-codec 使用教程

    本文将介绍如何使用 npm 包 lwm2m-codec 来进行 LwM2M 协议数据的编解码。LwM2M(Lightweight Machine to Machine)是一种针对物联网设备的通信协议。

    5 年前
  • npm 包 firmata 使用教程

    前言 Firmata 是一个使用标准串行通信协议的库,用于控制 Arduino 和类似的芯片。它能够简化与各种传感器和执行器的交互,并允许您通过计算机(包括手机)的串行口控制芯片。

    5 年前
  • npm 包 coap 使用教程

    简介 CoAP(Constrained Application Protocol)是一种专门用于与物联网设备通信的协议,它是一种轻量级的、基于 UDP 的协议,适用于小型设备和传感器通信。

    5 年前
  • npm 包 zive 使用教程

    什么是 zive? zive 是一种基于 WebSocket 和纯 JavaScript 的实时数据同步库。它能够简化前端应用程序中的实时数据通信和同步,为开发者提供了高效、可扩展和易于使用的解决方案...

    5 年前
  • npm 包 zcl-id 使用教程

    前言 在前端开发中,经常会遇到生成随机字符串或者唯一标识符的需求,为此,社区中产生了很多的第三方工具库。今天我要介绍的是 npm 包 zcl-id,它不仅可以生成唯一标识符,还可以生成不同长度的随机字...

    5 年前
  • npm 包 freebird-rpc 使用教程

    什么是 freebird-rpc freebird-rpc 是一个 npm 包,可以用于在前端项目中实现远程过程调用(RPC)。它支持多种协议和传输方式,包括 WebSocket、JSON-RPC、X...

    5 年前
  • npm 包 freebird-netcore-mockup 使用教程

    在前端开发中,我们时常会遇到需要测试接口的场景。为了避免依赖后端接口环境和数据,我们可以使用模拟数据来模拟接口返回结果。而 freebird-netcore-mockup 是一个可以帮助我们生成模拟数...

    5 年前
  • npm 包 freebird-constants 使用教程

    freebird-constants 是一个用于 Zigbee 协议中消息类型和事件的常量定义和转换的 npm 包。该包提供了方便的方式来处理 Zigbee 消息类型和事件,适用于前端开发中与 Zig...

    5 年前

相关推荐

    暂无文章