前后端分离开发之前端模拟数据

1.背景

1.1背景介绍

前后端分离的架构中,前后端同学约定好接口后就可以并行开发,最后双方再进行接口的联调。不过实际开发时,前后端联调会遇到下面这些问题,这些问题无疑中会影响联调的效率,拉长整个开发的周期。

1.2联调的痛点

  • “等接口”

前端和后端开发的进度不一致,例如前端同学已经按照交互完成了页面的开发,但是后端同学此时还不能及时提供出接口,此时前端同学会陷入“等接口”的境地。

  • “改接口-调接口”

好不容易等来了接口,前端同学联调后发现接口存在一些问题,再把问题反馈给后端同学。后端同学本地复现问题,修改完接口后再重新部署,然后通知给前端同学。前端同学这时再重新调用,测试接口是否正常,如果又发现了新的问题,再重复上面的流程...

首先对于第一个“等接口”的痛点,只有后端同学及时提供接口才能从根本上解决,比如让后端同学先开发,前端同学稍后再介入开发。Sadly,现实很多模块都是前后端同学同时开发,碰到这种情况,我们除了“死等到底”,还可以“提前准备”。前后端同学可以在开发前,约定好接口,具体的形式可以有:

  • 口头约定

=> 看似省事,实则后患无穷。可能导致双方记不清细节,以及日后出现问题后,容易互相甩锅。

  • 接口文档

=> 写word、markdown文档,更新到公司的wiki上。更好一点的话,使用swagger生成文档。

约定好接口后,前后端同学并行开发。后端如若不能及时提供接口,前端可以本地模拟数据或者使用一些接口模拟工具,详细内容会在后面介绍。

针对第二个痛点,前端其实可以进行“工作转移”。具体就是前端同学本地开发完,确认好各个接口已经按照接口文档约定的参数传参后,无需做后端同学的陪练,可以把最新代码发布到某一个开发环境,让后端同学在写完接口后,在开发环境通过页面进行联调。服务端接口如果有问题,后端同学自己修改完重新发布后,再自己从前端页面测试。如果实在需要更改或再增加参数,再去找前端同学。这样前端同学就可以从“改接口-调接口”的循环圈中解脱出来,把更多精力地放在开发工作上。

2.前端本地模拟数据

本节三种姿势介绍如何本地模拟数据,如果不需要可以跳过。

2.1直接在业务代码里模拟数据

在业务代码里面使用假数据供页面使用,等到后端提供接口后,再将页面的假数据注释掉,改成调用接口。

缺点:

这样会导致业务代码里面混杂了大量冗余代码;

2.2本地请求json

把假数据放到json文件中,本地请求json文件。

示例(数据为假数据):

{
  "Code": 200,
  "Message": "",
  "Data": {
    "items": [{
        "exp1": "fbcc7d9e-9be1",
        "exp2": "xxx",
        "enabled": true,
        "size": 0,
        "createBy": "",
        "createTime": "2019-07-12T02:56:54.17+08:00",
        "updateBy": "",
        "updateTime": "2019-08-06T03:03:37.859+08:00",
        "comment": ""
      }
    ],
    "totalCount": 1
  }
}

业务代码里:

import jsonData from './data.json';

通过jsonData(例如jsonData.Data.items)即可获取到json数据

优点:比上一个方法好一些,因为没有直接在业务代码里写入大量的假数据。

缺点:如果希望模拟50条数据的返回,简单粗暴地硬写50条(大量复制粘贴+修改)又有些浪费时间,不够优雅。

2.3使用Mock.js

使用Mock.js,按照Mock模版生成指定数量的随机数据

2.3.1在前端新建一个data.jsx

import Mock from 'mockjs';
var responseData = Mock.mock({
    Code:200,
    Message:"",
    Data:{
        'items|10': [{
            "exp1": /[a-z][0-9]{8}-[0-9]{4}/,
            "exp2|1": [ "xxx", "xxx", "xxx"],
            "enabled|1&#
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hotice888

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值