阅读 228

基于 ts 的动态接口数据配置

需求前景

前端组件是可复用的,那么复用前端组件时从后端读取的数据源同样也需要可复用(后端api也要是配置化的方式进行),前端需要提供配置项给后端进行动态配置生成api。

具体实现流程

名词解析

mock 规范约束

使用的ts的 interface 进行编译前校验,所有的组件接收的 mock 结构,都必须是该 Interface 的实现

解析器

将mock打平成 key,value 结构的工具 eg.

interface I_EchartOption {
  series: {
      data: {
        name: string;
        value: numberOrString;
        unit?: string;
      }[];
  name?: string;
  type: "pie";
}; // 数据集配置
}
const mock:I_EchartOption = {
  series: [
    {
      type: "pie",
      data: [
        {
          name: "中药",
          value: "2630",
          unit: "家",
          _viewData:{ // 通过组合的自定义属性
              
          }
        },
      ]
    }
  ]
}
const parsingMock=(mock:I_EchartOption):T_formInfo=>{}
parsingMock(mock)
// 返回一个 Mock 描述,见下文
复制代码

mock 描述

mock 描述,功能有两个

  1. 逆向生成 mock
  2. 接收后端传递的 build_option.options,渲染控制表单。
type T_formInfo = {  // mock 描述的接口
  key: string, // 值得路径嵌套
  value: string, // 解析出来的value
  build_component: string, // 承载改配置项的表单组件
  build_option: { // 传递给表单组件的参数
    options: any[], // 通过请求后端,让后端进行填充
    [key: string]: any
  },
}
[
        {
            "key": "series.0.data",
            "build_component": "seriesData",
            "build_option": {
                "options":[]
                "dataLength": 1
            },
            "formValue": "",
        },
        {
            "key": "series.0.data.0._viewData",
            "build_label": "副指标series.0.data.0._viewData",
            "build_component": "viewData",
            "build_option": {
                "options":[]
                "isShowTitle": false,
                "_viewDataMaxLength": 1
            },
        },
        {
            "key": "series.0.type",
            "value": "pie"
        }
    ]
复制代码
关注下面的标签,发现更多相似文章
评论