npm 包 fluent-schema 使用教程

什么是 fluent-schema

fluent-schema 是一个可以帮助开发者快速且可靠地构建 JSON Schema 的工具。它不仅提供了丰富的 schema 构建器,还支持自定义和插件扩展。

fluent-schema 由 Microsoft 开源,使用 TypeScript 编写,可在 Node.js 和浏览器环境下使用。

安装 fluent-schema

安装 fluent-schema 可以采用 npm 或 yarn 直接下载:

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

如何使用 fluent-schema

通过 fluent-schema,我们可以使用 fluent API 定义 JSON Schema,然后使用 validate 方法验证数据是否符合定义的格式。

实例

下面的示例代码展示了如何使用 fluent-schema 验证一个 JSON 对象:

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

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

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

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

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

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

验证结果将会输出 Data is valid

fluent-schema 构建器

fluent-schema 提供了多种 schema 构建器,以下是一些流行的构建器:

.title(value: string)

为 schema 设置标题:

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

.description(value: string)

为 schema 添加描述:

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

.type(value: schemaTypes)

设置 schema 的数据类型:

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

.required()

设置当前属性为必填项:

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

.minLength(value: number)

设置字符串属性的最小长度:

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

.maxLength(value: number)

设置字符串属性的最大长度:

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

.pattern(value: RegExp)

设置字符串属性的正则表达式:

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

.items(value: fluentSchema)

设置数组属性中的每个项的属性:

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

.properties(properties: { [key: string]: fluentSchema })

设置对象属性的属性:

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

.additionalProperties(value: fluentSchema)

设置对象添加其他属性时的值:

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

.oneOf(schemas: fluentSchema[])

设置对象属性可以符合多种定义:

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

.dependencies(dependencies: { [key: string]: string[] | fluentSchema })

设置对象属性的依赖项:

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

fluent-schema 校验器

fluent-schema 除了提供 schema 构建器外,还提供了一些常用的校验器:

minimum(value: number)

设置数值属性的最小值:

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

maximum(value: number)

设置数值属性的最大值:

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

multipleOf(value: number)

设置数值属性必须是指定数字的倍数:

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

format(value: string)

设置属性的格式:

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

const(value: any)

设置属性必须等于指定值:

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

enum(values: any[])

设置属性必须符合指定的枚举值:

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

minItems(value: number)

设置数组属性的最少项数:

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

maxItems(value: number)

设置数组属性的最多项数:

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

contains(value: fluentSchema)

设置数组属性必须包含指定的子项:

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

自定义 fluent-schema

fluent-schema 支持自定义 schema 构建器和校验器,以下是自定义正则表达式的例子:

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

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

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

在上面的示例中,我们可以使用 addModifier 方法添加一个自定义属性 pattern 并指定正则表达式。

fluent-schema 插件

fluent-schema 还支持插件扩展,以下是一个使用插件的示例:

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

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

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

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

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

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

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

在上面的示例中,我们使用 addFluentSchemaPlugin 方法添加了一个自定义插件 ValidationPlugin 并进行数据验证。

总结

fluent-schema 是一个非常好用的 JSON Schema 工具,它提供了丰富的 schema 构建器和校验器,支持自定义和插件扩展。通过使用 fluent-schema,我们可以快速且可靠地构建 JSON Schema,并对数据进行校验。

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


猜你喜欢

  • npm 包 eslint-config-nightmare-mode 使用教程

    在前端开发中,代码规范是非常重要的,它可以提高代码的可维护性并且避免一些潜在的问题。在实际开发中,我们可以使用 eslint 工具对代码规范进行检查和自动修复。eslint-config-nightm...

    6 年前
  • npm 包 broccoli-sri-hash 的使用教程

    在前端开发过程中,我们经常会使用 npm 包管理工具来管理我们的项目依赖。npm 包也是前端工程师经常使用的工具之一。 在这篇文章中,我将介绍一个很实用的 npm 包——broccoli-sri-ha...

    6 年前
  • npm包: ember-cli-sri使用教程

    在Web开发中,确保资源的完整性和安全性对于Web应用程序的性能和可靠性至关重要。为了保证网站中JavaScript、CSS和图像等文件完整性, Subresource Integrity(SRI)成...

    6 年前
  • npm 包 ember-cli-qunit 使用教程

    什么是 ember-cli-qunit? ember-cli-qunit 是一个 npm 包,用于在 ember 应用中使用 QUnit 测试框架。QUnit 是一种流行的 JavaScript 单元...

    6 年前
  • npm 包 babel-plugin-htmlbars-inline-precompile 使用教程

    在前端开发中,我们经常需要使用模板引擎来渲染视图。其中,htmlbars 是一种基于 Ember.js 的模板语言,它可以让我们在客户端和服务器端共用同一套模板语言,统一了前后端的设计风格。

    6 年前
  • npm 包 broccoli-coffee 使用教程

    什么是 broccoli-coffee ? broccoli-coffee 是一个基于 broccoli 的插件,可以将 coffee script 构建为 JavaScript。

    6 年前
  • npm 包 ember-cli-legacy-blueprints 使用教程

    什么是 ember-cli-legacy-blueprints? ember-cli-legacy-blueprints 是一个 npm 包,它提供了一组经典的 Ember.js 蓝图。

    6 年前
  • npm包 Ember-cli-coffeescript使用教程

    Ember-cli是一款前端框架,它具有高度的可定制性和强大的扩展性,可以用于构建复杂的网站和应用程序。其中,Ember-cli-coffeescript是一个npm包,它为Ember-cli提供了使...

    6 年前
  • npm 包 broccoli-file-remover 使用教程

    介绍 在前端开发中,经常会用到打包工具将多个文件打包成一个或多个文件。但是在打包中,有一些不必要或者重复的文件会被打包到文件中,增加文件大小,影响前端性能。这时候,我们就需要使用一个工具来移除不需要的...

    6 年前
  • npm 包 Broccoli-file-mover 使用教程

    前言 Broccoli-file-mover 是一个用于提供 Broccoli 构建工具文件移动能力的 npm 包。它可以帮助前端工程师优化构建流程,提高开发效率,同时降低开发成本。

    6 年前
  • npm 包 broccoli-export-tree 使用教程

    在前端开发中,构建工具是必不可少的一个环节。而其中一个极其重要的构建工具就是 Broccoli。Broccoli 是一个快速的、可靠的前端构建工具,其可用于将我们的代码、样式和模板组织到一起,并进行高...

    6 年前
  • npm 包 emberjs-build 使用教程

    Ember.js 是一个用于构建 Web 应用程序的 JavaScript 框架。它提供了丰富的功能,便于开发者构建多页和单页应用程序。我们经常会需要将 Ember 应用程序构建为静态文件以便部署到生...

    6 年前
  • npm 包 ember-cli-sauce 使用教程

    作为前端开发者必备的工具之一,npm 包在开发过程中扮演着重要的角色。其中,ember-cli-sauce 是一个流行的 npm 包,它提供了一些很有用的功能。本文将从如何安装和配置到实际使用,提供详...

    6 年前
  • npm 包 morph-range 使用教程

    简介 morph-range 是一种前端 npm 包,用于帮助前端开发者制作静态页面上的价格滑动条。该包主要依赖于基础的 JavaScript、CSS 和 HTML 技术,为开发者提供了一种非常方便的...

    6 年前
  • npm 包 htmlbars 使用教程

    在前端开发中,我们常常需要将数据动态绑定到 HTML 模板中,这样能够提高开发效率,减少代码量,并且更方便维护。这时候,我们就需要用到前端框架或者库来实现。在这篇文章中,我们将介绍一个非常实用的 np...

    6 年前
  • npm 包 htmlbars-comment-redactor 使用教程

    htmlbars-comment-redactor 是一个可以方便地添加注释的 npm 包,广泛应用于前端开发中。本文将介绍如何在前端项目中使用该包,并提供详细的指导和示例代码,帮助读者更快速、更顺利...

    6 年前
  • npm 包 ember-cli-htmlbars-inline-precompile 使用教程

    对于正在开发 Ember 应用程序的前端工程师来说,编写模板是相当普遍的需求。Ember 提供了一个非常好用的模板引擎,即 Handlebars,可以帮助我们方便地组织和渲染应用程序中的模板。

    6 年前
  • NPM 包 ember-resolver 的使用教程

    什么是 ember-resolver ember-resolver 是一个 Ember.js 应用程序的 Resolver 类,用于查找 Ember 应用程序中的文件和组件。

    6 年前
  • npm 包 ember-cli-testdouble 使用教程

    介绍 ember-cli-testdouble 是一款测试框架,用于在 Ember.js 应用程序中创建模拟对象和 Spy。它可以让您更轻松地测试您的应用程序,同时减少测试代码的冗余度。

    6 年前
  • npm 包 ember-ajax 使用教程

    简介 ember-ajax 是一个用于在 Ember.js 应用程序中发起 Ajax 请求的 npm 包。它提供了一种简单和直接的方式来处理 Ajax 请求,并且与许多其他 Ember.js 插件和功...

    6 年前

相关推荐

    暂无文章