基于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 判断中文字符长度的函数代码
Aug 27 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
javascript数据结构之二叉搜索树实现方法
Nov 25 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
Dec 08 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
axios实现简单文件上传功能
Sep 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
在JavaScript中调用php程序
2009/03/09 PHP
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
详解javascript void(0)
2020/07/13 Javascript
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
python lxml中etree的简单应用
2019/05/10 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
新年晚会主持词
2014/03/24 职场文书
基层党组织整改方案
2014/10/25 职场文书
项目投资意向书范本
2015/05/09 职场文书
红色电影观后感
2015/06/18 职场文书