npm 包 vega-schema 使用教程

阅读时长 4 分钟读完

什么是 vega-schema

vega-schema 是在 Vega-Lite 规范的基础上,提供了进一步的数据类型定义和数据格式校验的 JSON Schema 实现。它允许利用 JSON Schema 来验证和编写可组合的数据源和数据转换操作。

Vega-Lite 规范允许用户用简短的语法定义图形,但不包括如何从数据源中获取数据或进行数据处理。 Vega-Lite 使用 Vega 数据分析和可视化语言实现大量的数据转换能力,但缺乏正式的架构或格式定义以确保正确的数据输入和输出格式。

vega-schema 可以用来为 JSON 数据源定义强类型约束(例如,输入每个维度的数据类型以及每个维度的位置等),从而更好地支持数据交互和数据共享。它还可以用来描述复杂的数据处理管道,包括多步操作和非线性操作。

安装

安装 vega-schema 命令如下:

使用方法

定义 schema

要定义 vega-schema,请使用 JSON 格式并指定属性类型。例如以下定义包含一个 person 对象,它具有 nameage 属性:

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

从 schema 中生成数据

vega-schema 可以根据定义好的 schema 生成符合 schema 的数据,使用 vega.schema.generate 函数实现。例如,可以从上面的 schema 中生成一个 person 对象:

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

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

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

输出结果:

在数据上验证 schema

vega-schema 还可以用于在数据上进行类型和格式验证。 要这样做,请使用 vega.schema.validate 函数验证数据是否符合 schema 的规定。

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

输出结果:

如果改变数据中任一属性的值类型,将无法通过验证:

输出结果:

总结

vega-schema 是 Vega-Lite 规范的扩展,提供了进一步的数据类型定义和数据格式校验的 JSON Schema 实现。我们可以定义强数据类型约束,从而更好地支持数据交互和数据共享。同时可以利用 vega-schema 进行数据类型和格式验证,避免将错误数据输入到我们的程序中。

使用 vega-schema 可以有效地减轻前端的数据处理负担,提高数据处理的效率。

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

纠错
反馈