基于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 继承的实现
Jul 09 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
node.js中的path.normalize方法使用说明
Dec 08 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
Apr 29 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
深入理解令牌认证机制(token)
Aug 22 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
vue-cli点击实现全屏功能
Mar 07 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笔记之:数据类型与常量的使用分析
2013/05/14 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
Python连接DB2数据库
2016/08/27 Python
python生成二维码的实例详解
2017/10/29 Python
python编程嵌套函数实例代码
2018/02/11 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
python如何调用百度识图api
2020/09/29 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
《都江堰》教学反思
2014/02/07 职场文书
加油口号大全
2014/06/13 职场文书
爱国影片观后感
2015/06/18 职场文书
爱国主义主题班会
2015/08/14 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
python 中yaml文件用法大全
2021/07/04 Python
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js