npm 包 forcible 使用教程

在开发前端项目的过程中,我们经常需要处理用户输入的数据,这时候对数据进行合法性校验就显得尤为重要了。要实现合法性校验,我们可以使用一些现有的库,比如 jQuery Validate 或者 Validator.js。不过,这些库的体积较大,很多时候只需要简单的校验规则,使用这些库显得有些浪费。

而 forcible 就是一个可以轻松解决这个问题的 npm 包。它是一个超轻量级的表单校验库,支持自定义校验规则,可以根据需要进行快速的自定义设置。在本文中,我们将详细介绍 forcible 的使用方法。

安装:

在安装 forcible 之前,我们需要先安装 Node.js。安装完成之后,我们可以通过以下命令来安装 forcible :

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

使用方法:

引入 forcible

在使用 forcible 之前,我们需要先引入它。我们可以使用以下代码将它引入到项目中:

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

基本使用

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

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

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

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

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

在上述代码中,我们首先定义了三种规则:年龄、邮件和密码。然后我们定义了一个数据对象,其中包含了三个属性 age、email 和 password。

使用 validator.validate(rules, data) 函数进行数据验证。如果数据校验通过,则返回一个空对象( {} )。如果数据校验不通过,则会返回一个以属性名为 key,每条不通过校验规则的信息组成的数组为 value 的对象。

以上面的数据为例,输出结果如下:

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

自定义规则

我们可以自定义规则来满足特定业务的需求。例如,我们需要校验某一字符串的长度是否等于特定长度:

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

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

在上述代码中,我们首先使用 forcible.defineRule() API 来定义了一个长度校验规则。然后我们定义了一个规则对象,在对象中包含了要校验的属性 code。需要注意的是,我们在规则对象中定义的 type 和明确定义的 exactLength 相对应。

在运行完上述代码之后,你就可以使用该规则来校验你的数据了。示例代码如下:

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

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

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

运行以上代码之后,你会得到以下输出:

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

异步规则

在某些情况下,校验规则可能需要异步验证。例如,我们需要校验一个用户名是否已经被占用:

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

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

在上述代码中,我们使用 Promise 来模拟了一个异步请求获取已占用的用户名。在规则函数中,如果输入的用户名已占用,则会 reject 该 Promise,并传递错误消息;如果未被占用,则会 resolve 该 Promise。

在运行完上述代码之后,你就可以使用该规则来校验你的数据了。示例代码如下:

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

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

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

运行以上代码之后,你会得到以下输出:

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

复杂表单数据的校验

在上面的例子里,我们只是校验了简单的数据。但在实际开发中,经常需要校验复杂的表单数据。我们可以对每个表单项都单独设置校验规则,但这样显然不是最好的选择。forcible 提供了更加灵活的表单校验方法,可以轻松地设置复杂的规则。

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

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

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

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

在上述代码中,我们定义了一个复杂的规则对象。规则对象包含了三个属性:个人信息、联系方式和密码。每个属性都包含了多个表单项,同时每个表单项都有自己的校验规则。

在运行完以上代码之后,你会得到以下输出:

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

表单实时校验

我们还可以在用户输入表单的过程中进行实时校验。下面是一个简单的实现方式:

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

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

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

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

在上述代码中,我们在用户输入过程中监听 input 事件。当用户输入的时候,我们使用 setTimeout() 函数进行延迟处理,等待 500 毫秒之后再进行校验。这样可以有效地减少校验需要的资源和时间,提高性能。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600668efd9381d61a3540d31


猜你喜欢

  • npm 包 empty-standby-list 使用教程

    当我们的电脑长时间运行时,可能会出现内存占用过高的情况。这时候,如果我们不愿意重启电脑,就需要使用 empty-standby-list 这个 npm 工具包来清空系统内存。

    3 年前
  • npm 包 jsttd-uniq 使用教程

    前言 在前端开发中,我们常常需要去重数组或者对象数组,以便后续的业务操作。JavaScript 中提供了 Set 数据结构,可以方便地对基本类型数组去重,但对于对象数组需要进行一些处理才能去重。

    3 年前
  • npm 包 class-loop 使用教程

    在前端开发中,经常需要在 DOM 元素上应用某种样式或操作。如果 DOM 元素较多,手动为每一个元素添加样式或操作会变得非常麻烦和繁琐。为了简化这个过程,我们可以使用 npm 包 class-loop...

    3 年前
  • npm 包 personal-number-generator 使用教程

    personal-number-generator 是一款 npm 包,它可以生成个人身份证号码。在前端开发中,有时候需要使用到身份证号码来进行数据验证或者其他操作,使用这个包可以方便地生成测试数据。

    3 年前
  • npm 包 ww-vue2-editor 使用教程

    在前端开发中,我们经常需要使用一些富文本编辑器来实现文章编辑、留言等功能。ww-vue2-editor 是一个基于 Vue.js 2.x 的富文本编辑器组件,它支持文章编辑、图片上传等功能。

    3 年前
  • npm 包 dynamodb-mongodb-migrate 使用教程

    在现代 Web 开发中,许多前端项目需要与后端数据库进行交互。而在这些数据库中,DynamoDB 和 MongoDB 是非常受欢迎的两种 NoSQL 数据库。在许多情况下,我们需要在这两种数据库之间进...

    3 年前
  • npm 包 a11yoffcanvas 的使用教程

    前言:无障碍(Web Accessibility)是近年来越来越被重视的一个话题,a11yoffcanvas 是一个用于创建 无障碍级别的 Web 应用程序面板 的 npm 包。

    3 年前
  • npm 包 @jimpick/peer-star-app 使用教程

    前置知识 在学习 @jimpick/peer-star-app 之前,需要掌握以下的基础知识: npm 的基本使用方法和相关命令; IPFS 的基本概念及其使用方法; js-ipfs 的基本概念及其...

    3 年前
  • npm 包 @doubret/opentracing-auto 使用教程

    在前端开发过程中,我们经常需要进行性能优化和调试。其中一个非常有用的工具就是分布式追踪,可以追踪整个服务调用链路,了解程序性能瓶颈所在,从而优化程序。 在本文中,我们将介绍一个开源的 npm 包 @d...

    3 年前
  • npm 包 meeow 使用教程

    介绍 meeow 是一个轻量级的前端库,它能够快速地将输入框上显示错误信息的逻辑添加到你的表单验证中。使用 meeow,你不再需要手动管理错误信息的显示和隐藏,而是将此逻辑交给 meeow 来处理。

    3 年前
  • npm 包 react-rp-components 使用教程

    在前端开发中,React 是一种流行的 JavaScript 库,很多项目都会使用到 React 相关的包。react-rp-components 是一个 npm 包,提供了一系列基于 React 的...

    3 年前
  • npm 包 rollup-plugin-stylus-to-css 使用教程

    简介 在前端开发过程中,CSS 是我们必不可少的一部分,而前端 CSS 的编写方式也有很多种,比如 SASS、LESS、Stylus 等等。而 rollup-plugin-stylus-to-css ...

    3 年前
  • npm 包 @sletheren/personalnumbergenerator 使用教程

    在前端开发中,生成各种随机数据是常见的需求。而个人身份证号码是机密数据,如果需要生成身份证号码来作为测试数据,那么我们就需要一个安全可靠的工具。这时候,就可以使用 npm 包 @sletheren/p...

    3 年前
  • npm 包 electron-react-parcel-three-template 使用教程

    什么是 electron-react-parcel-three-template? electron-react-parcel-three-template 是一个基于 Electron、React、...

    3 年前
  • npm 包 @dareksob/stylekit 使用教程

    对于前端开发者来说,寻找一个好用的 CSS 样式库是一件非常头疼的事情。传统的方法是下载一个已有的 CSS 库,然后进行修改。但是,这种方式需要花费大量的时间和精力,还存在一些其他的问题,比如维护困难...

    3 年前
  • npm 包 @wsdot/route-selector 使用教程

    引言 在前端开发中,我们常常需要实现一些地图应用,其中一个常见的需求就是根据起点和终点的坐标计算路径,并在地图上展示出来。而这个过程中,如何选择路线就显得尤为重要。

    3 年前
  • npm 包 lazyvideo 使用教程

    介绍 lazyvideo 是一个用于延迟加载视频的小型 JavaScript 库。它可以将视频文件上传到云存储,当用户滚动到需要加载的视频时,才开始进行下载和加载。这样可以显著加快网站的响应速度。

    3 年前
  • npm 包 unescape-unicode 使用教程

    unicode 是一种字符编码方案,它可以用来表示多种语言的字符,包括中文、英文、日文等等。但是在 JavaScript 中,有时会遇到转义过的 unicode 字符串,例如\u4e2d\u6587表...

    3 年前
  • npm 包 dom-event-hub 使用教程

    什么是 dom-event-hub? dom-event-hub 是一个能够在页面中简化事件监听和处理的工具库,它允许你在组件之间传递事件,让你的代码更加模块化和易于维护。

    3 年前
  • npm 包 @netbasal/test1234 使用教程

    本文介绍 @netbasal/test1234 的使用方法,这是一款用于前端开发的 npm 包,可以帮助我们更加方便地进行测试。 什么是 @netbasal/test1234? @netbasal...

    3 年前

相关推荐

    暂无文章