基于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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
JavaScript入门教程(6) Window窗口对象
Jan 31 Javascript
jquery nth-child()选择器的简单应用
Jul 10 Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
Jan 22 Javascript
JS 实现获取打开一个界面中输入的值
Mar 19 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
JavaScript与java语言有什么不同
Sep 22 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 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长字符串定义方法
2012/07/12 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
php二维数组转成字符串示例
2014/02/17 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
yii中widget的用法
2014/12/03 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
Python内建数据结构详解
2016/02/03 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
django实现日志按日期分割
2020/05/21 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
保证书范文大全
2014/04/28 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
个人买房协议书范本
2014/10/06 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
文体活动总结
2015/02/04 职场文书
公司财务管理制度
2015/08/04 职场文书
九年级语文教学反思
2016/03/03 职场文书