基于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实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
JavaScript知识点总结之如何提高性能
Jan 15 Javascript
Bootstrap 附加导航(Affix)插件实例详解
Jun 01 Javascript
HTML页面,测试JS对C函数的调用简单实例
Aug 09 Javascript
JavaScript利用Date实现简单的倒计时实例
Jan 12 Javascript
JS实现页面打印功能
Mar 16 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
Jun 06 Javascript
关于express与koa的使用对比详解
Jan 25 Javascript
详解基于 Node.js 的轻量级云函数功能实现
Jul 08 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 Javascript
微信小程序保持session会话的方法
Mar 20 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 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 无限级缓存的类的扩展
2009/03/16 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
python实现给数组按片赋值的方法
2015/07/28 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
Python中的集合介绍
2019/01/28 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
python学生信息管理系统实现代码
2019/12/17 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
仓库门卫岗位职责
2013/12/22 职场文书
电钳专业个人求职信
2014/01/04 职场文书
运动会开幕式解说词
2014/02/05 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书