1. 安装 Mock.js

npm install mockjs --save-dev
# 或使用 CDN
<script src="https://cdn.bootcdn.net/ajax/libs/Mock.js/1.0.0/mock-min.js"></script>

2. 创建 Mock 数据文件

在项目中新建 mock 目录,创建 mock.js 文件:

// mock/mock.js
import Mock from 'mockjs';// 模拟用户列表接口
Mock.mock('/api/user/list', 'get', {'code': 200,'message': 'success','data|10': [{'id|+1': 1,'name': '@cname', // 随机中文名'age|18-60': 1,'email': '@email','avatar': '@image("100x100")'}]
});// 模拟登录接口
Mock.mock('/api/login', 'post', function(options) {const { username, password } = JSON.parse(options.body);if (username === 'admin' && password === '123456') {return Mock.mock({code: 200,message: '登录成功',token: '@guid' // 随机生成 token});} else {return { code: 401, message: '账号或密码错误' };}
});

3. 在入口文件中引入 Mock

根据环境判断是否启用 Mock(开发环境启用,生产环境关闭):

// main.js(Vue/React 入口文件)
if (process.env.NODE_ENV === 'development') {require('./mock/mock.js');
}

4. 发送请求(无需修改业务代码)

前端正常发送请求,Mock.js 会自动拦截匹配的请求并返回模拟数据:

// 使用 axios 发送请求(与真实接口调用方式一致)
axios.get('/api/user/list').then(response => {console.log(response.data);});axios.post('/api/login', { username: 'admin', password: '123456' }).then(response => {console.log(response.data.token);});

5. 高级用法

5.1 随机数据生成

Mock.js 提供丰富的占位符生成随机数据:

Mock.mock('/api/data', {'name': '@cname','date': '@date("yyyy-MM-dd")','color': '@color','text': '@paragraph(3)'
});

5.2 动态参数处理

根据请求参数返回不同数据:

Mock.mock(/\/api\/user\/detail/, 'get', (options) => {const userId = options.url.split('/').pop();return {id: userId,name: '@cname'};
});

5.3 延迟响应

模拟网络延迟:

Mock.setup({timeout: '500-1000' // 随机 0.5~1 秒延迟
});

6. 环境切换配置

通过 webpack 或 vite 配置动态开关 Mock:

Vue CLI 配置(vue.config.js

module.exports = {devServer: {before: require('./mock/mock.js') // 仅在开发环境引入}
};

Vite 配置(vite.config.js

export default defineConfig({plugins: [{name: 'mock',configureServer(server) {if (process.env.NODE_ENV === 'development') {require('./mock/mock.js');}}}]
});

7. 注意事项

  1. 接口一致性:确保 Mock 数据的字段名和类型与后端接口文档一致。
  2. 边缘场景覆盖:模拟空数据、异常状态码(如 404/500)等场景。
  3. 及时同步:后端接口完成后,逐步替换 Mock 数据为真实接口。
  4. 文档记录:使用 Swagger 或 YApi 等工具同步接口定义,方便联调。

总结

通过 Mock.js,前端开发者可以:

  • 独立开发,不依赖后端进度;
  • 模拟各种数据场景(如分页、异常状态);
  • 快速验证页面交互逻辑;
  • 减少联调阶段的沟通成本。

最终实现“前后端并行开发”,显著提升项目整体效率。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AimRT 从零到一:官方示例精讲 —— 二、HelloWorld示例.md

HelloWorld示例 官方仓库&#xff1a;helloworld 配置文件&#xff08;configuration_helloworld.yaml​ &#xff09; 依据官方示例项目结构自行编写YAML配置文件 # 基础信息 base_info:project_name: helloworld # 项目名称build_mode_tags: ["EXAMPLE", &quo…

Tauri 跨平台开发指南及实战:用前端技术征服桌面应用(合集-万字长文)

厌倦了笨重的Electron应用&#xff1f;想要构建体积小、性能高、安全可靠的跨平台桌面应用&#xff1f;Tauri将是你的不二之选&#xff01;本教程带你从入门到精通&#xff0c;掌握这个下一代桌面应用开发框架&#xff0c;并通过实战APK分析工具项目&#xff0c;将理论知识转化…

【LeetCode 热题 100】矩阵置零 / 螺旋矩阵 / 旋转图像 / 搜索二维矩阵 II

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;LeetCode 热题 100 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 矩阵矩阵置零螺旋矩阵旋转图像搜索二维矩阵 II 矩阵 矩阵置零 矩阵置零 用两个数组分别标记行和列&#xff0c;判断…

JavaScript进阶(三十一): === 与 == 比较运算符

文章目录 一、前言二、严格相等运算符 ()三、宽松相等运算符 ()四、推荐做法五、特殊情况 一、前言 在 JavaScript 中&#xff0c; 和 都是比较运算符&#xff0c;但它们在比较时有重要区别&#xff1a; 二、严格相等运算符 () 不进行类型转换只有当两个操作数的值和类型都…

HTML与安全性:XSS、防御与最佳实践

HTML 与安全性&#xff1a;XSS、防御与最佳实践 前言 现代 Web 应用程序无处不在&#xff0c;而 HTML 作为其基础结构&#xff0c;承载着巨大的安全责任。跨站脚本攻击&#xff08;XSS&#xff09;仍然是 OWASP Top 10 安全威胁之一&#xff0c;对用户数据和网站完整性构成严…

安达发|破解医疗器械多BOM困局:APS生产计划排产软件解决方案

在医疗器械设备制造行业&#xff0c;生产计划与排程&#xff08;Advanced Planning and Scheduling, APS&#xff09;系统的应用至关重要。由于医疗器械行业具有严格的法规要求&#xff08;如FDA、ISO 13485&#xff09;、复杂的多级BOM&#xff08;Bill of Materials&#xff…

组件轮播与样式结构重用实验

任务一&#xff1a;使用“Swiper 轮播组件”对自行选择的图片和文本素材分别进行轮播&#xff0c;且调整对应的“loop”、“autoPlay”“interval”、“vertical”属性&#xff0c;实现不同的轮播效果&#xff0c;使用Swiper 样式自定义&#xff0c;修改默认小圆点和被选中小圆…

【Stable Diffusion】文生图进阶指南:采样器、噪声调度与迭代步数的解析

在Stable Diffusion文生图(Text-to-Image)的创作过程中,采样器(Sampler)、噪声调度器(Schedule type)和采样迭代步数(Steps)是影响生成效果的核心参数。本文将从技术原理、参数优化到实践应用,深入剖析DPM++ 2M采样器、Automatic噪声调度器以及采样步数的设计逻辑与协…

第一天 车联网定义、发展历程与生态体系

前言 车联网&#xff08;Internet of Vehicles, IoV&#xff09;作为物联网&#xff08;IoT&#xff09;在汽车领域的延伸&#xff0c;正在彻底改变人们的出行方式。无论是自动驾驶、远程诊断&#xff0c;还是实时交通优化&#xff0c;车联网技术都扮演着核心角色。本文将从零…

foc控制 - clarke变换和park变换

1. foc控制框图 下图是foc控制框图&#xff0c;本文主要是讲解foc控制中的larke变换和park变换clarke变换将 静止的 a b c abc abc坐标系 变换到 静止的 α β αβ αβ坐标系&#xff0c;本质上还是以 定子 为基准的坐标系park变换 则将 α β αβ αβ坐标系 变换到 随 转…

软件系统容量管理:反模式剖析与模式应用

在数字化时代&#xff0c;软件系统的重要性日益凸显。随着业务的不断拓展和用户数量的持续增长&#xff0c;软件系统的容量管理成为保障其高效运行的关键因素。《发布&#xff01;软件的设计与部署》第二部分围绕容量展开深入探讨&#xff0c;系统地阐述了容量的定义、范围&…

23种设计模式-行为型模式之解释器模式(Java版本)

Java 解释器模式&#xff08;Interpreter Pattern&#xff09;详解 &#x1f9e0; 什么是解释器模式&#xff1f; 解释器模式是一种行为型设计模式&#xff0c;主要用于解释和执行语言的语法规则。它定义了一个解释器来处理特定的语言句法&#xff0c;并通过一个抽象语法树来…

基于Springboot + vue + 爬虫实现的高考志愿智能推荐系统

项目描述 本系统包含管理员和学生两个角色。 管理员角色&#xff1a; 个人中心管理&#xff1a;管理员可以管理自己的个人信息。 高校信息管理&#xff1a;管理员可以查询、添加或删除高校信息&#xff0c;并查看高校详细信息。 学生管理&#xff1a;管理员可以查询、添加或…

五种机器学习方法深度比较与案例实现(以手写数字识别为例)

正如人们有各种各样的学习方法一样&#xff0c;机器学习也有多种学习方法。若按学习时所用的方法进行分类&#xff0c;则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念&#xff0c;…

Blender插件 三维人物角色动作自动绑定 Auto-Rig Pro V3.68.44 + Quick Rig V1.26.16

Auto-Rig Pro是一个集角色绑定、动画重定向和Unity、Unreal Engine的Fbx导出于一体的全能解决方案。最初作为我个人的内部角色绑定工具开发&#xff0c;我几年前将其发布&#xff0c;并自那时起增加了许多新功能。 Blender插件介绍 Auto-Rig Pro插件简介 Auto-Rig Pro是一个强…

网络基础概念:从菜鸟到入门

前言&#xff1a;快递小哥的故事 想象一下你要给朋友寄个礼物&#xff0c;这个过程其实和网络通信非常相似&#xff1a; 1. 你需要知道朋友的”地址“&#xff08;IP地址&#xff09; 2. 要注明是送到他家大门还是物业代收&#xff08;端口号&#xff09; 3. 要选择快递公司并…

23种设计模式-行为型模式之中介者模式(Java版本)

Java 中介者模式&#xff08;Mediator Pattern&#xff09;详解 &#x1f9e0; 什么是中介者模式&#xff1f; 中介者模式是一种行为型设计模式&#xff0c;它通过定义一个中介者对象来封装一组对象之间的交互。中介者使得各个对象不需要显式地知道彼此之间的关系&#xff0c…

【Redis】基础4:作为分布式锁

文章目录 1. 一些概念2. MySQL方案2.1 方案一&#xff1a;事务特性2.1.1 存在的问题2.1.2 解决方案 2.2 方案二&#xff1a;乐观锁2.3 方案三&#xff1a;悲观锁 3. Redis3.1 实现原理3.2 实现细节3.2.1 问题1&#xff1a;持有期间锁过期问题3.2.2 问题2&#xff1a;判断和释放…

深度学习---框架流程

核心六步 一、数据准备 二、模型构建 三、模型训练 四、模型验证 五、模型优化 六、模型推理 一、数据准备&#xff1a;深度学习的基石 数据是模型的“燃料”&#xff0c;其质量直接决定模型上限。核心步骤包括&#xff1a; 1. 数据收集与标注 来源&#xff1a;公开数据集…

阿里云 OpenManus 实战:高效AI协作体系

阿里云 OpenManus 实战&#xff1a;高效AI协作体系 写在最前面初体验&#xff1a;快速部署&#xff0c;开箱即用 真实案例分享&#xff1a;从单体开发到智能良好提示词过程展示第一步&#xff1a;为亚马逊美国站生成商品描述第二步&#xff1a;为eBay全球站生成商品描述结果分析…