【总结】1727- 前端开发中如何高效地模拟数据?

news2024/11/23 19:22:02

👉 「文章推荐」

  1. 详细聊一聊 Vue3 动态组件

  2. 深入浅出 Vue3 自定义指令

  3. 6 个你必须明白 Vue3 的 ref 和 reactive 问题

  4. 初中级前端必须掌握的 10 个 Vue 优化技巧

  5. 分享 15 个 Vue3 全家桶开发的避坑经验

在开发和测试工作中,mock 数据非常实用。mock 数据是指在开发和测试环境中,使用虚拟数据代替真实数据。mock 数据能避免因后端接口未完成或数据异常等原因导致的开发和测试工作无法进行。

本文将介绍常用的 mock 数据方案,包括「手动编写」「使用第三方库」「在线 mock 数据平台」。帮助开发者更好地使用 mock 数据。

一、手动编写 mock 数据

「手动编写 mock 数据」是一种比较常见的 mock 数据方案。它的优点是「灵活性高」,可以根据实际需求编写任意格式的 mock 数据。缺点是「编写工作量大」,需要手动编写每一个数据项。代码示例:

const mockData = {
  name: "张三",
  age: 18,
  gender: "男",
};

二、使用第三方库生成 mock 数据

使用第三方库生成 mock 数据是一种常用的 mock 数据方案。它的优点是可以快速方便地生成各种类型的 mock 数据。接下来介绍几个常用生成 mock 数据的开源库:

1. Mock.js (19.1k⭐)

Mock.js 是一个用于生成随机数据和拦截 Ajax 请求的库,支持浏览器端和 Node.js 端使用,可以快速方便地生成各种类型的 mock 数据。

主页地址:http://mockjs.com/
仓库地址:https://github.com/nuysoft/Mock

14a2d04fc57a10c4a87f3bc118c1abe1.png

使用方式:

  1. 在项目中安装 mock.js:

$ npm install mockjs
  1. 编写 mock 数据规则:

// 使用 Mock
var Mock = require("mockjs");
var data = Mock.mock({
  // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
  "list|1-10": [
    {
      // 属性 id 是一个自增数,起始值为 1,每次增 1
      "id|+1": 1,
    },
  ],
});
// 输出结果
console.log(JSON.stringify(data, null, 4));

优点:支持生成各种类型的数据,并且可以通过拦截 Ajax 请求模拟后端接口返回数据。缺点:需要学习 Mock.js 的语法规则。

2. faker.js (9.8k⭐)

faker.js 是一个用于生成随机数据的库,支持生成各种类型的数据,包括姓名、地址、电话、电子邮件、日期、数字等等。

主页地址:https://fakerjs.dev/
仓库地址:https://github.com/faker-js/faker

c00bf8882fcc4b3da497fe950b3f6130.png

使用方式:

  1. 在项目中安装 faker.js:

$ npm install --save-dev @faker-js/faker
  1. 编写生成随机数据的代码:

// ESM
import { faker } from "@faker-js/faker";

// CJS
const { faker } = require("@faker-js/faker");

export function createRandomUser(): User {
  return {
    userId: faker.string.uuid(),
    username: faker.internet.userName(),
    email: faker.internet.email(),
    avatar: faker.image.avatar(),
    password: faker.internet.password(),
    birthdate: faker.date.birthdate(),
    registeredAt: faker.date.past(),
  };
}

export const USERS: User[] = faker.helpers.multiple(createRandomUser, {
  count: 5,
});

优点:支持生成各种类型的数据,并且可以自定义数据规则。缺点:需要手动编写生成数据的代码。

3. Chance.js (6.2k⭐)

Chance.js 是一个用于生成随机数据的库,支持生成各种类型的数据,包括字符串、数字、日期、布尔值、颜色、地址等等。

主页地址:https://chancejs.com/
仓库地址:https://github.com/chancejs/chancejs

2e43d9cfe8794ab2fdb00b39784d7510.png

使用方式:

  1. 在 HTML 文件中引入 chance.js:

<script src="https://cdn.bootcdn.net/ajax/libs/chance/1.1.11/chance.min.js"></script>
  1. 编写生成随机数据的代码:

const chance = new Chance();
const mockData = {
  name: chance.name(),
  age: chance.age(),
  gender: chance.gender(),
};

优点:支持生成各种类型的数据,并且可以自定义数据规则。缺点:需要手动编写生成数据的代码。

4. axios-mock-adapter (3.2k⭐️)

axios-mock-adapter 是一个 Axios 适配器,它可以很好地模拟 axios 的 HTTP 响应。我们只需要配置响应数据模板,然后作为 axios 响应拦截器添加到 axios 中。

仓库地址:https://github.com/ctimmerm/axios-mock-adapter

5de9bc1530fd09856f1078bf5d4f8138.png

使用方式:

  1. 在项目安装 axios-mock-adapter:

$ npm install axios-mock-adapter --save-dev
  1. 编写生成随机数据的代码

var axios = require("axios");
var MockAdapter = require("axios-mock-adapter");

// This sets the mock adapter on the default instance
var mock = new MockAdapter(axios);

// Mock any GET request to /users
// arguments for reply are (status, data, headers)
mock.onGet("/users").reply(200, {
  users: [{ id: 1, name: "John Smith" }],
});

axios.get("/users").then(function (response) {
  console.log(response.data);
});

使用特定参数模拟 GET 请求:

var axios = require("axios");
var MockAdapter = require("axios-mock-adapter");

// This sets the mock adapter on the default instance
var mock = new MockAdapter(axios);

// Mock GET request to /users when param `searchText` is 'John'
// arguments for reply are (status, data, headers)
mock.onGet("/users", { params: { searchText: "John" } }).reply(200, {
  users: [{ id: 1, name: "John Smith" }],
});

axios
  .get("/users", { params: { searchText: "John" } })
  .then(function (response) {
    console.log(response.data);
  });

5. json-schema-faker (3k⭐)

json-schema-faker 是一个用于根据 JSON Schema 生成 mock 数据的库,支持生成各种类型的数据,包括字符串、数字、日期、布尔值、对象等等。

主页地址:https://json-schema-faker.js.org/
仓库地址:https://github.com/json-schema-faker/json-schema-faker

dc0e538bbb60252b1b4a3e0da508b4e9.png

使用方式:

  1. 在 HTML 文件中引入 json-schema-faker:

<script src="https://cdn.bootcdn.net/ajax/libs/json-schema-faker/0.4.7/json-schema-faker.min.js"></script>
  1. 编写 JSON Schema 规则:

const schema = {
  type: "object",
  properties: {
    name: { type: "string", faker: "name.findName" },
    age: { type: "integer", minimum: 18, maximum: 60 },
    gender: { type: "string", enum: ["男", "女"] },
  },
};
  1. 生成 mock 数据:

const mockData = jsf.generate(schema);

优点:支持根据 JSON Schema 自动生成 mock 数据,并且可以自定义数据规则。缺点:需要学习 JSON Schema 的语法规则。

6. casual (3k⭐)

casual 是一个用于生成随机数据的库,支持生成各种类型的数据,包括字符串、数字、日期、布尔值、颜色、地址等等。

仓库地址:https://github.com/boo1ean/casual

0d96e744cf0468cd28035b617659a291.png

使用方式:

  1. 在项目安装 casual:

$ npm install casual
  1. 编写生成随机数据的代码:

var casual = require("casual");

// Generate random sentence
// You don't need function call operator here
// because most of generators use properties mechanism
var sentence = casual.sentence;

// Generate random city name
var city = casual.city;

// Define custom generator
casual.define("point", function () {
  return {
    x: Math.random(),
    y: Math.random(),
  };
});

// Generate random point
var point = casual.point;

// And so on..

优点:支持生成各种类型的数据,并且可以自定义数据规则。缺点:需要手动编写生成数据的代码。

三、使用在线 mock 数据平台

使用在线 mock 数据平台是一种方便快捷的方案。开发者只需要在平台上定义好 mock 数据的规则,就可以通过调用接口获取 mock 数据,无需编写任何代码。常用的在线 mock 数据平台包括 Easy Mock、Mockoon、Mocky、MockServer 等。

1. Easy Mock

Easy Mock 是一个开源的、基于 Node.js 的 mock 数据平台,支持自定义接口、自定义数据返回、接口代理等功能。

官方网站:https://easymock.org/

16b4c9663b58cd5b24ea77e62cfe81ca.png

使用方式:

  1. 在 Easy Mock 官网注册账号,并创建项目。

  2. 在项目中创建接口,并定义接口的请求方法、路径、请求参数、响应数据等信息。

  3. 通过调用接口获取 mock 数据。

优点:使用方便,支持更多的自定义功能,可以根据实际需求自由定制 mock 数据。缺点:需要自己搭建服务器,需要一定的技术能力。

2. Mockoon

Mockoon 是一个开源的、跨平台的 mock 数据平台,支持自定义接口、自定义数据返回、接口代理等功能。

官方网站:https://mockoon.com/

6dc7debb041994195c32ae05b42cbf57.png

使用方式:

  1. 在 Mockoon 官网下载并安装应用程序。

  2. 在应用程序中创建项目,并定义接口的请求方法、路径、请求参数、响应数据等信息。

  3. 通过调用接口获取 mock 数据。

优点:使用方便,支持更多的自定义功能,跨平台支持。缺点:需要自己安装应用程序,无法直接在浏览器中使用。

3. Mocky

Mocky 是一个在线的 mock 数据平台,支持自定义接口、自定义数据返回、接口代理等功能。

官方网站:https://designer.mocky.io/

70261c92600bfae571f01fe51b10eac8.png

使用方式:

  1. 在 Mocky 官网创建账号,并创建项目。

  2. 在项目中创建接口,并定义接口的请求方法、路径、请求参数、响应数据等信息。

  3. 通过调用接口获取 mock 数据。

优点:使用方便,无需搭建服务器。缺点:免费版的功能有限,付费版价格较高。

4. MockServer

MockServer 是一个开源的、基于 Java 的 mock 数据平台,支持自定义接口、自定义数据返回、接口代理等功能。

官方网站:https://mock-server.com/

6b3fb5a2c3f139eb4e74e7dcfaa94598.png

使用方式:

  1. 在 MockServer 官网下载并安装应用程序。

  2. 在应用程序中创建项目,并定义接口的请求方法、路径、请求参数、响应数据等信息。

  3. 通过调用接口获取 mock 数据。

优点:使用方便,支持更多的自定义功能,可以根据实际需求自由定制 mock 数据。缺点:需要自己搭建服务器,需要一定的技术能力。

四、总结

在前端开发中,mock 数据是一项非常重要的工作。无论是手动编写 mock 数据,还是使用第三方库或在线 mock 数据平台,都需要根据实际需求选择合适的方案。在开发过程中,开发者可以根据不同的情况选择不同的 mock 数据方案,以提高开发效率和测试效果。

往期回顾

#

如何使用 TypeScript 开发 React 函数式组件?

#

11 个需要避免的 React 错误用法

#

6 个 Vue3 开发必备的 VSCode 插件

#

3 款非常实用的 Node.js 版本管理工具

#

6 个你必须明白 Vue3 的 ref 和 reactive 问题

#

6 个意想不到的 JavaScript 问题

#

试着换个角度理解低代码平台设计的本质

497efeb050029338c5915e9a31d70ac6.gif

回复“加群”,一起学习进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于值的深度强化学习算法

目录 DQN2013 —— Playing Atari with Deep Reinforcement LearningDQN2015 —— Human-level control through deep reinforcement learning引用文献 DQN2013 —— Playing Atari with Deep Reinforcement Learning 论文下载地址 论文介绍 该论文提出了一个基于卷积神经网络…

数字IC验证环境的创建

本文介绍了从一组可重用的验证组件中构建测试平台所需的步骤。UVM促进了重用&#xff0c;加速了测试平台构建的过程。 首先对测试平台集成者&#xff08;testbench integrator&#xff09;和测试编写者&#xff08;test writer &#xff09;进行区分&#xff0c;前者负责测试平…

【Java EE】-博客系统二(前后端分离)

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【JavaEE】 分享: 徘徊着的 在路上的 你要走吗 易碎的 骄傲着 那也曾是我的模样 ——《平凡之路》 主要内容&#xff1a;显示用户信息、上传头像、新增博客、删除博客、修改博客…

Android:设计模式

文章参考来源1 文章参考来源2 文章参考来源3 MVC Model 数据来源&#xff0c;管理业务数据逻辑&#xff0c;读取数据等 View 视图 Controller 单例模式&#xff0c;处理业务逻辑&#xff0c;负责改变Model和View 经典的MVC架构是 用户点击View&#xff0c;View将用户输入转…

springboot详细整合mybatisplus

SpringBoot详细整合mybatisPlus 文章目录 SpringBoot详细整合mybatisPlus一、引入mybatis_plus依赖二、修改mybatis_plus的yml配置三、添加mybatis_plus的其他配置以及包扫描四&#xff0c;修改mybatis的配置&#xff08;这一步根据实际情况修改&#xff09; 无奈&#xff0c;一…

三个关键数字变化,剖析中国智能手机市场的趋势及其影响

近期&#xff0c;全球行业分析机构CounterpointResearch公布了《中国智能手机高端市场白皮书》&#xff0c;对中国智能手机市场数据进行详细分析。该报告揭示了几个关键数据&#xff0c;值得深入剖析。 上面的图表展示了中国智能手机市场在2012年至2022年的11年间销量、平均价格…

UE5《Electric Dreams》项目PCG技术解析 之 PCGDemo_Ditch关卡详解

文章目录 前导文章关卡概要PCGGraphPoints From Actor Tag作为PCG的分割工具分层装饰 一些知识点和技巧使用Attribute Operation将属性暂存到临时属性中是否生成碰撞 小结 前导文章 《UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流》《UE5《Electric…

mac系统通过终端连接远程服务器

mac系统通过终端连接远程服务器 1、通过自带终端连接1.1 命令直接连接1.2 方式2——创建连接 2、通过iTerm2连接2.1 方式一&#xff1a;命令直接连接 3. Mac上使用scp命令 1、通过自带终端连接 1.1 命令直接连接 如下&#xff1a;ssh -p 22 root远程IP1.2 方式2——创建连接 …

类Twitter风格的RSS阅读器

本文完成于 2 月中旬&#xff0c;其中的反代还是 frp npm 方案&#xff1b; 什么是 RSS ? RSS 是用 PHP、Laravel、Inertia.js、Tailwind 和 Vue.js 编写的简单的类Twitter 风格的 RSS阅读器&#xff0c;支持 RSS和ATOM 格式。 命令行安装 在群晖上以 Docker 方式安装。 官…

形式化验证,QED: Quick Error Detection Tests for Effective Post-Silicon Validation(二)

目录 一、Article:文献出处&#xff08;方便再次搜索&#xff09; &#xff08;1&#xff09;作者 &#xff08;2&#xff09;文献题目 &#xff08;3&#xff09;文献时间 &#xff08;4&#xff09;引用 二、Data:文献数据&#xff08;总结归纳&#xff0c;方便理解&am…

chatgpt赋能python:如何用Python打造一个简单的抽奖程序

如何用Python打造一个简单的抽奖程序 随着互联网的不断发展&#xff0c;抽奖活动已经成为了各种营销活动的必备环节&#xff0c;因此如何快速便捷地实现一个抽奖程序也变得尤为重要。本文将介绍如何使用Python打造一个简单的抽奖程序。 一、抽奖程序的工作原理 抽奖程序的核…

Vue使用vue-3d-model组件预览3D三维文件、立体文件,支持旋转、自动播放

实现效果 Tips:先泼个冷水&#xff0c;这个预览3D组件有个致命的缺陷——不能设置材质、皮肤文件的目录路径&#xff0c;必须要和3d文件放在同一个目录&#xff0c;如果项目是用hash模式(url后面会有/#/这种井号)&#xff0c;就会导致无法读取根目录的材质文件。所以推荐了解下…

LabVIEW利用相机开发零件处理和检查系统

LabVIEW利用相机开发零件处理和检查系统 为了将自动化运用于飞机发动机轮机机翼的去毛刺和检查流程&#xff0c;设计了一个系统&#xff0c;该系统使用六轴机器人操作抖动&#xff0c;并结合两个关键操作。首先&#xff0c;使用专门选定的工具对机翼进行去毛刺&#xff0c;以去…

ssh 端口转发

本地转发 ssh -L -CTfN 9527:remote_server_ip:23 ssh_server_ipL 本地转发模式C 压缩数据T 禁用模拟终端f 后台运行N 不执行远程指令&#xff0c; 常用于仅做端口转发 在local_server上开启本地转发模式之后 。ssh_server就会出现2端的TCP链接。然后所有发向9527端口TCP数据…

ASCII、Unicode、UTF-8、GBK、全角/半角

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 目录 一、定义 1、ASCII 2、Unicode 3、UTF-8 4、GB2312 5、GBK 6、\u和\x 7、全角和半角 二、相互转化 1、str 与 ASCI…

[acwing周赛复盘] 第 110 场周赛20230701

[acwing周赛复盘] 第 110 场周赛20230701 总结5044. 求和1. 题目描述2. 思路分析3. 代码实现 5045. 三角形数1. 题目描述2. 思路分析3. 代码实现 5046. 智商药1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 状态不对&#xff0c;把自己写懵了。T1 模拟币T2 对向双指针…

关于Linux同步机制知识点整理

在Linux系统中&#xff0c;同步机制是操作系统中非常重要的一部分&#xff0c;以下是一些基本要点&#xff1a; 互斥锁 互斥锁是一种「独占锁」&#xff0c;比如当线程 A 加锁成功后&#xff0c;此时互斥锁已经被线程 A 独占了&#xff0c;只要线程 A 没有释放手中的锁&#…

梁宁:VisionPro、GPT、Web3三件套齐备,元宇宙开启

本文内容整理自图灵社区对谈栏目直播&#xff0c;主题为 ChatGPT 真需求&#xff0c;从产品的第一性原理解析。 上篇内容回顾&#xff1a;梁宁&#xff1a;为什么中国没有像 ChatGPT 和 Vision Pro 这样的创新产品&#xff1f; 梁宁&#xff0c;产品战略专家&#xff0c;曾任湖…

chatgpt赋能python:如何在Python中安装PIL

如何在Python中安装PIL Python Imaging Library&#xff08;PIL&#xff09;是一款用于处理图像的Python库&#xff0c;它提供了各种图像处理功能&#xff0c;包括大小调整、旋转、裁剪等等。如果你需要在你的Python项目中处理图像&#xff0c;那么PIL是一个不错的选择。 步骤…

DBeaver连接GaussDB

DBeaver 官网&#xff1a;https://dbeaver.io/打开DBeaver&#xff0c;点击菜单栏 “数据库”>“驱动管理” 点击“新建” 填入下面内容&#xff1a; 驱动名称&#xff1a;GS 驱动类型&#xff1a;Generic 类名&#xff1a;org.postgresql.Driver URL模板&#xff1a;jdbc…