npm 包 joi-validation-strategy 使用教程

阅读时长 7 分钟读完

前言

在前端开发中,表单验证是必不可少的,为了方便开发者实现表单验证,社区中有很多优秀的表单验证库。本文将介绍一款基于 Joi 和 Angular 的表单验证策略库 joi-validation-strategy,同时也适用于 React、Vue 和其他框架。

介绍 Joi 和 joi-validation-strategy

Joi 是 Node.js 中一个强大的验证库,它可以验证 JavaScript 对象是否符合特定规则,包括必填、最大长度、最小值等等。而 joi-validation-strategy 是在 Joi 基础上,与 Angular 组件结合,提供了更加专业的表单验证策略。

相较于其他表单验证库,joi-validation-strategy 具有以下几个优点:

  1. 当需要进行表单验证时,通过定义一组规则,只需要相应地执行验证即可,使表单验证变得非常简单。

  2. 如果需要将验证规则添加到现有的模型中,则 joi-validation-strategy 可以轻松实现这一目标。

  3. joi-validation-strategy 还提供了许多预处理器和后处理器,以便流程更完整,便于使用。

安装 joi-validation-strategy

joi-validation-strategy 是一个 npm 包,所以在使用之前需要先安装。

使用 joi-validation-strategy

下面将通过一个简单的表单示例来演示 joi-validation-strategy 的使用方法。首先,我们需要定义表单数据模型:

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

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

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

Joi.schema 可以帮助我们定义我们的 User 模型,并检查我们的数据是否符合预期。现在,我们已经定义了 User 模型,接下来是定义 Angular 表单项的验证。

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

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

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

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

    -------------------------------------------------
    ---------------------------------- ----- --- ---- - ---
    -------------------------------------------------------------
    -------------------------------------------------------
  -
-
  • 我们在 NgModule 中注入了 ValidationStrategy,
  • 在 ngOnInit 生命周期中,我们初始化组件属性以及将模式、模型和观察值属性分配给验证策略。

此时,我们应该有能力将我们的表单项添加到 HTML 文件并绑定事件。

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

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

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

对表单组件的验证

接下来,我们将添加一个表单验证函数。它将检查我们的模型是否符合 Joi.schema 的基础规则。

这只是一个示例,因为 joi-validation-strategy 还有许多其他方法和管道可以使用,例如:

  • validate():对提交表单时执行验证进程
  • getModel<T>():将表单控件和规则用作参数,并尝试将结果映射到指定类型的对象
  • setError<T>():设置指定字段的验证错误的消息
  • setAllErrors<T>():设置所有与当前表单相关的验证错误消息
  • resetError<T>():重置指定字段的验证错误消息
  • resetAllErrors<T>():重置当前表单项的所有验证错误消息

验证结果回显到用户面前

[verify-all-errors.pipe.ts] 内实现了一个 Angular 管道,使开发者有一种方式可用以处理多个错误消息,并将其回显到用户。

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

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

然后,可以在组件模板 HTML 文件中使用这个管道。

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

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

这将生成一个简单的错误消息,告诉我们为什么无法提交表单。具体来说,我们可以看到将在控制台上传递错误消息的机制,以便在调试时进行查看。

结论

在本文中,我们介绍了 joi-validation-strategy 这款基于 Joi 和 Angular 的表单验证策略库,以及它的优秀特性和基本用法。我们使用了一个简单的示例展示了 joi-validation-strategy 的使用方法,并演示了如何通过 validate() 方法执行表单验证进程以及如何将验证结果回显到用户面前。通过这篇文章,希望读者对 joi-validation-strategy 有了进一步的了解。

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

纠错
反馈