基于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 相关文章推荐
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
jQuery选择器及jquery案例详解(必看)
May 20 Javascript
AngularJs基于角色的前端访问控制的实现
Nov 07 Javascript
浅谈javascript中的数据类型转换
Dec 27 Javascript
js编写简单的计时器功能
Jul 15 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
Sep 18 Javascript
js实现GIF动图分解成多帧图片上传
Oct 24 Javascript
Node.js API详解之 V8模块用法实例分析
Jun 05 Javascript
JavaScript实现两个数组的交集
Mar 25 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强制下载类型的实现代码
2011/04/21 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python 实现端口扫描工具
2020/12/18 Python
linux系统都有哪些运行级别
2012/04/15 面试题
外贸业务员岗位职责
2013/11/24 职场文书
办公室文书岗位职责
2013/12/16 职场文书
出国签证在职证明
2014/01/16 职场文书
个人委托书怎么写
2014/04/04 职场文书
美化环境标语
2014/06/20 职场文书
竞选学委演讲稿
2014/09/13 职场文书
中秋节寄语2015
2015/03/24 职场文书
干部考核工作总结
2015/08/12 职场文书