基于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 fullscreen全屏实现代码
Apr 09 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
纯JS实现动态时间显示代码
Feb 08 Javascript
jquery处理json对象
Nov 03 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
JavaScript实现QQ列表展开收缩扩展功能
Oct 30 Javascript
详解ESLint在Vue中的使用小结
Oct 15 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
详解vue组件中使用路由方法
Feb 12 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
浅析Vue 防抖与节流的使用
Nov 14 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
BBS(php & mysql)完整版(三)
2006/10/09 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Mac 上切换Python多版本
2017/06/17 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
python 如何区分return和yield
2020/09/22 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
个人收入证明范本
2014/01/12 职场文书
花店创业计划书范文
2014/02/07 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
倡议书格式范文
2014/04/14 职场文书
小学生操行评语大全
2014/04/22 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库