首页 > 其他分享 >如何优雅在webpack项目实现mock服务器

如何优雅在webpack项目实现mock服务器

时间:2023-03-16 18:32:18浏览次数:29  
标签:return res server webpack api let 服务器 mock

为什么需要 mock

至于平时开发为什么需要 mock 数据,应该大多数的同学都非常清楚了;如果前后端同步开发的话,少不了这一步,在需求评审,技术评估等流程通过后,前后端就会约定接口 api 的字段(但是在部分公司可能会少了这一步),确认接口 api 字段约定之后,前端就可以通过 mock server 去 mock 数据进行开发了,不需要等后端开发完 api 接口再去对接,但是有些同学在开发的过程中经常已经把 ui 弄好了,就在苦苦等后端大哥的接口...白白浪费了不必要的时间,如果可以自己 mock 数据开发,那等后端接口都好了只需要把域名或者接口前缀换一下再联调一下就万事大吉了。

mock 数据的方式

image.png

json schema

有些同学喜欢在代码里面用 json schema 的形式去 mock 数据,比如:

export function xhr(params = {}) {
  if (process.env.NODE_ENV === "development" && useMock) {
    return delay(2000).then(() => Promise.resolve(require("./mock/list.json")));
  }
  return request({
    url: "xxxxx",
    method: "POST",
  });
}

function delay(ms = 2000) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve();
    }, ms);
  });
}

优点:简单。

缺点:第一,需要侵入逻辑代码里面;第二,没办法真正的模拟 ajax 请求,因为这种 mock 是不会发起 http 请求的;第三,不能获取传递的参数去做对应的事情;第四,不能修改 http 的状态;第五,打包项目的时候还会被打包进 bundle。

结论:缺点明显大于优点。

可视化的 mock

市面上有很多可视化的 mock api 方案,比如 apiFox。

优点:ApiFox 集成了 Postman + Swagger + Mock + JMeter,是一款做得比较的好的可视化 mock 解决方案。

缺点:如果只有前端团队在单独使用,就有点大材小用没必要,如果是前后端测试都同时在使用的话,那就是一个不错的选择。

结论:ApiFox 更像一个团队协作的 mock 工具。

在 webpack 实现 mock server 需要的知识

如果要自己在 webpack 项目的搭建一个定制化的 mock server 需要如下的知识点。

  • 一点点的 webpack 知识
  • 一点点的 node 知识

很简单的啦!

实现 webpack mock server

小试牛刀

在 webpack 中实现定制化的 mock server ,需要借助 webpack-dev-server,也就是 webpack 配置下 devServer 字段。该字段下提供了一个onBeforeSetupMiddleware的一个钩子,回调参数里面为我们提供了一个app参数,参数是一个 node 的服务。

既然知道了app是一个 node 服务,那让我们小试牛刀一下(很快不疼,一下就过去了

标签:return,res,server,webpack,api,let,服务器,mock
From: https://blog.51cto.com/u_15523693/6125406

相关文章

  • TCP/IP网络编程 -- (十)多进程服务器端
    TCP/IP网络编程--(十)多进程服务器端10.1进程概念及应用为了提高客户端的平均满意度,通常会使用并发服务器的方法,并且网络程序中数据通信时间比CPU运算时间大,因此向多个......
  • 联想服务器ThinkSystem SR358F V2-RAID5
    raid安装步骤1、F2或del进Bios-高级-RAID陈列卡 2、主菜单 3、选第四项:查看下磁盘情况 4、没有做Raid5状态 5、返回上一级:选第一项6、进入第一项  7......
  • HTTP协议和web静态服务器
    一、HTTP协议1、HTTP协议的定义网络协议网络协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。HTTP协议HTTP协议(超文本传输协......
  • 用Fiddler进行Mock(就是模拟接口返回的数据)
    在接口测试过程中,有时会遇到某些不容易构造或不容易获取的对象,我们可以通过mock(欺骗)来创建一个虚拟的对象以便测试,也就是模拟接口返回的数据。Mock使用场景1、对象信息难......
  • swagger的API显示问题和IIS服务器配置
    SwaggerUI 这个页面,只在VisualStudio调试时显示。放到IIS上是不显示的。在IIS上的应用池,设置为“无托管”,并且安装ASP.NETCoreIIS模块:dotnet-hosting-6.0.14-win......
  • 修改服务器默认远程端口
    以CentOS7.7为例介绍如何修改Linux系统默认远程端口。远程连接并登录到Linux实例。具体操作,请参见通过密码或密钥认证登录Linux实例。运行以下命令备份sshd服务配......
  • 我们为什么要阅读webpack源码
    相信很多人都有这个疑问,为什么要阅读源码,仅仅只是一个打包工具,会用不就行了,一些配置项在官网,或者谷歌查一查不就好了吗,诚然在大部分的时候是这样的,但这样在深入时也会遇到......
  • Qt连接不上Linux服务器?
    目录1.Qt连接代码2.问题分析2.1ip和port是否填写正确2.2Linux的代码处理是否正确2.3Linux服务器端口未开放(这个很重要!)方法1:开放端口,一劳永逸方法2:关闭防火墙,去开放......
  • 39 openEuler搭建FTP服务器-安装管理vsftpd服务
    39openEuler搭建FTP服务器-安装管理vsftpd服务39.1安装vsftpd使用vsftpd需要安装vsftpd软件,在已经配置yum源的情况下,通过root权限执行如下命令,即可完成vsftpd的安装。#......
  • Vue 代理服务器___Vue 跨域通过Axios 的ajax方式的get请求获取数据
    Vue代理服务器___Vue跨域通过Axios的ajax方式的get请求获取数据1、说明1.1:配置2台本地服务器说明:node_modules为vue脚手架        package.json为静态数据......