npm 包 md-to-schema 使用教程

阅读时长 12 分钟读完

简介

md-to-schema 是一个基于 Markdown 格式的数据建模工具,它使用简单的 Markdown 语法来定义数据模型,并将其转换为 JSON Schema,以便在前端和后端应用程序中使用。该工具旨在帮助开发人员轻松地设计和维护数据模型,并最大化数据模型的可读性和可维护性。

安装

您可以使用 NPM 在您的项目中安装 md-to-schema 包:

安装成功后,您可以通过以下方式引入工具:

使用方法

基本语法

md-to-schema 支持多种 Markdown 语法来定义数据模型。以下是一些基本语法示例:

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

-- ----- ----

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

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

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

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

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

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

这个 Markdown 语法将生成以下 JSON Schema:

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

如您所见,md-to-schema 将 Markdown 语法解析为 JSON Schema,并使其易于在应用程序中使用。

更多示例

以下是更复杂的示例,演示了更高级的语法功能。您可以将这些示例用于方便地定义您的数据模型:

定义对象类型

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

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

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

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

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

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

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

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

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

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

该 Markdown 语法将生成以下 JSON Schema:

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

定义数组类型

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

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

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

该 Markdown 语法将生成以下 JSON Schema:

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

自定义选项

md-to-schema 还提供了各种选项,以便您可以自定义数据模型的生成方式。以下是一些常见选项:

自定义属性名称

默认情况下,md-to-schema 使用 Markdown 块标题作为属性名称。但是,您可以通过在标题名前添加 @ 符号来指定属性名称:

该 Markdown 语法将生成以下 JSON Schema:

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

自定义缩进符号

默认情况下,md-to-schema 使用两个空格作为子级元素的缩进符。然而,您可以通过设置 indent 选项来指定不同的缩进符:

指定 required 属性

默认情况下,md-to-schema 根据 Markdown 定义的数据模型生成 required 属性。您可以通过添加 @optional 注释来将属性定义为可选的。

例如:

该 Markdown 语法将生成以下 JSON Schema:

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

自定义属性类型

默认情况下,md-to-schema 会基于 Markdown 描述的属性值类型推断属性类型。然而,您可以通过添加 @type 注释来指定属性值的类型。

例如:

该 Markdown 语法将生成以下 JSON Schema:

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

结论

md-to-schema 是一个非常有用的工具,它使数据模型的定义变得更加简单、易读和易维护。只需使用简单的 Markdown 语法,便可以生成清晰且易于理解的 JSON Schema。因此,如果您想快速定义和维护复杂的数据模型,md-to-schema 绝对是一个值得尝试的工具。

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

纠错
反馈