基于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 相关文章推荐
JS图片无缝滚动(简单利于使用)
Jun 17 Javascript
javascript 原型链维护和继承详解
Nov 26 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 Javascript
Vue2路由动画效果的实现代码
Jul 10 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
JS对日期操作封装代码实例
Nov 08 Javascript
解决vue项目router切换太慢问题
Jul 19 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 Javascript
在JavaScript中如何使用宏详解
May 06 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
JQuery toggle使用分析
2009/11/16 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
Vue2.0如何发布项目实战
2017/07/27 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
python验证身份证信息实例代码
2019/05/06 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
Oracle性能调优原则
2012/05/03 面试题
物流仓管员工作职责
2014/01/06 职场文书
全国道德模范事迹
2014/02/01 职场文书
小学六年级学生评语
2014/04/22 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
公司员工体检通知
2015/04/21 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技