基于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 相关文章推荐
Knockout text绑定DOM的使用方法
Nov 15 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
jquery组件使用中遇到的问题整理及解决
Feb 21 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 Javascript
web 前端常用组件之Layer弹出层组件
Sep 22 Javascript
详解基于javascript实现的苹果系统底部菜单
Dec 02 Javascript
Bootstrap整体框架之JavaScript插件架构
Dec 15 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
Javascript 模拟mvc实现点餐程序案例详解
Dec 24 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下的权限算法的实现
2007/04/28 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
PHP7 新增常量
2021/03/09 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
Python素数检测的方法
2015/05/11 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
python序列类型种类详解
2020/02/26 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
消防安全管理制度
2014/02/01 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
公司委托书格式范文
2014/10/09 职场文书
入党现实表现材料
2014/12/23 职场文书
实习护士自荐信
2015/03/25 职场文书
二十年同学聚会感言
2015/07/30 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL