基于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 相关文章推荐
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
js实现在网页上简单显示时间的方法
Mar 02 Javascript
如何用angularjs制作一个完整的表格
Jan 21 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
Sep 28 Javascript
详解webpack模块化管理和打包工具
Apr 21 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
vue 引用自定义ttf、otf、在线字体的方法
May 09 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
极典R601SW收音机
2021/03/02 无线电
php 生成饼图 三维饼图
2009/09/28 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
Python ljust rjust center输出
2008/09/06 Python
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
用Python写一个自动木马程序
2019/09/17 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
你常见到的runtime exception
2016/09/05 面试题
高二化学教学反思
2014/01/30 职场文书
开业主持词
2014/03/21 职场文书
英语专业自荐书
2014/06/13 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
详解Redis复制原理
2021/06/04 Redis
MySQL系列之二 多实例配置
2021/07/02 MySQL
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技