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


Posted in Javascript onDecember 18, 2019

需求前景

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

具体实现流程

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

名词解析

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"
    }
  ]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript里使用Dom操作Xml
Sep 20 Javascript
我的javascript 函数链之演变
Apr 07 Javascript
JS OffsetParent属性深入解析
Jan 13 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
基于JavaScript实现回到页面顶部动画代码
May 24 Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 Javascript
jQuery EasyUi 验证功能实例解析
Jan 06 Javascript
iview table高度动态设置方法
Mar 14 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
重学JS之显示强制类型转换详解
Jun 30 Javascript
H5实现手机拍照和选择上传功能
Dec 18 #Javascript
如何使用webpack打包一个库library的方法步骤
Dec 18 #Javascript
js实现上传图片并显示图片名称
Dec 18 #Javascript
js实现多图和单图上传显示
Dec 18 #Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
Dec 18 #Javascript
微信小程序实用代码段(收藏版)
Dec 17 #Javascript
微信小程序修改数组长度的问题的解决
Dec 17 #Javascript
You might like
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
详解angular element()方法使用
2017/04/08 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python应用文件读取与登录注册功能
2019/09/23 Python
python opencv实现简易画图板
2020/08/27 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
new修饰符是起什么作用
2015/06/28 面试题
工程专业毕业生自荐信范文
2013/12/25 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
环保建议书100字
2014/05/14 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
MySQL七大JOIN的具体使用
2022/02/28 MySQL