vite 使用 vite-plugin-mock 和 mockjs 配置 mock 模式

vite 使用 vite-plugin-mock 和 mockjs 配置 mock 模式

当后端还没有完全弄好,而前端需要同时启动的时候,一般会使用 mock 模拟后端响应,这样在后端接口准备完成之后,前端能以较小的工作量和接入接口,完成生产开发。

最近正好尝试了一下,记录一下配置过程。

一、下载和安装

vite 可以使用 vite-plugin-mock 插件,配合 mockjs 完成项目的 mock 配置。所以我们需要下载两个东西:vite-plugin-mock 和 mockjs

注意!

目前最新的 vite-plugin-mock 是 3.0.0,如果直接下载会是最新的版本。但是因为ES特性的更改,3.0以上的版本会出现 require 相关的问题,所以需要降低版本,不然会报错:ReferenceError: require is not defined

错误相关的问题可以看这

npm install mockjs vite-plugin-mock@2.9.6

二、配置 vite 的 mock 模式

vite.config.js 文件中引入对应插件:

import { defineConfig} from 'vite'
import { viteMockServe } from 'vite-plugin-mock'...plugins: [vue(),viteMockServe({mockPath: './src/mock'})]

其中我们可以看到,mock 插件可以有一些配置,其中 mockPath 指的是 mock 接口存放位置,例如我这里将 mock 内容都放置在根目录中的src目录下的mock目录中。

除了mockPath这个配置,还有一些别的配置项可以选择:

{mockPath?: string;ignore?: RegExp | ((fileName: string) => boolean);watchFiles?: boolean;enable?: boolean;ignoreFiles?: string[];configPath?: string;
}
  • mockPath

    • type: string
    • default: mock
    • 设置模拟.ts 文件的存储文件夹
    • 如果watchFiles:true,将监视文件夹中的文件更改。 并实时同步到请求结果
    • 如果 configPath 具有值,则无效
  • ignore

    • type: RegExp | ((fileName: string) => boolean);
    • default: undefined
    • 自动读取模拟.ts 文件时,请忽略指定格式的文件
  • watchFiles

    • type: boolean
    • default: true
    • 设置是否监视mockPath对应的文件夹内文件中的更改
  • enable

    • type: boolean
    • default: true
    • 是否启用 mock 功能
  • configPath

    • type: string
    • default: vite.mock.config.ts
    • 设置模拟读取的数据条目。 当文件存在并且位于项目根目录中时,将首先读取并使用该文件。 配置文件返回一个数组
  • logger

    • type: boolean
    • default: true
    • 是否在控制台显示请求日志

三、写 mock 接口

自己写一些接口,当在 mock 模式下,向这些接口发送的请求会被 vite 自动拦截,并返回接口定义的返回值。

还记得我们在一开始,配置 vite-plugin-mock 的时候传入了一个 mockPath 吗,我们去 /src/mock 下创建一个 index.js

import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer'
import MockMethod from './api'export function setupProdMockServer() {createProdMockServer([...MockMethod])
}

然后在 src/mock 下创建一个 api.js

export default [{url: '/mock/api/test', //请求地址method: 'get', //请求方式response: () => {return {code: 200,msg: 'ok',data: Math.floor(Math.random() * 30) + 1}},},
]

解释一下我们干了什么事:

首先,在 src/mock/index.js 中我们实现了一个函数,其中使用了 createProdMockServer 函数,并传入了一个数组。接下来,当我们使用接口发送请求的时候,vite 都会帮我们检查这个接口请求的地址是不是在 mock 中配置过的,检查的范围就是 createProdMockServer 中传递的这个数组,只有将配置好的接口传入到这里,才会生效。

然后我们在 api.js 中定义了一个示例接口,这个接口的配置是一个对象形式,我写得只是一个简单的示例,在发送地址为/mock/api/test的请求的时候,会返回一个范围在 0-30 之间的随机数。

mock接口的具体字段选项如下:

{// 请求地址url: string;// 请求方式method?: MethodType;// 设置超时时间timeout?: number;// 状态吗statusCode?:number;// 响应数据(JSON)response?: ((opt: { [key: string]: string; body: Record<string,any>; query:  Record<string,any>, headers: Record<string, any>; }) => any) | any;// 响应(非JSON)rawResponse?: (req: IncomingMessage, res: ServerResponse) => void;
}

一个示例项目

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

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

相关文章

javascript的Proxy

1. 什么是Proxy Proxy是ES6中新增的一个特性&#xff0c;它可以拦截对象的操作&#xff0c;提供了一个中间层来控制对目标对象的访问。简单来说&#xff0c;它可以对对象进行代理&#xff0c;从而实现对对象的监控、修改、过滤等操作。 2. 为什么出现Proxy 在JavaScript中&a…

在re:Invent上IBM宣布与亚马逊云科技携手,Amazon RDS for DB2正式亮相

11月29日&#xff0c;IBM在亚马逊云科技re:Invent 2023上宣布&#xff0c;与亚马逊云科技合作推出Amazon Relational Database Service&#xff08;Amazon RDS&#xff09;for Db2。这项全新的完全托管云服务旨在简化客户在混合云环境中管理人工智能&#xff08;AI&#xff09;…

electron-vue运用及案例代码

前言 Electron是一个使用JavaScript, HTML和CSS构建跨平台桌面应用程序的开源库。它允许开发者使用纯web技术创建原生应用程序,这使得web开发者能够利用他们已经掌握的web技术来构建桌面应用。 以下是一个简单的Electron应用程序的代码示例: // 引入Electron的主模块 co…

MDK5改造之格式化以及文件函数注释插件和主题应用

MDK5插件以及主题应用 前言一、主题修改1、主题文件下载2、主题应用 二、插件安装以及使用1.下载插件2、插件使用步骤 前言 为了写代码的心应手&#xff0c;先对MDK5进行改造 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 &#x1f389;参考了其他大师…

结合贝叶斯定理浅谈商业银行员工异常行为排查

1.贝叶斯定理的数学表达 贝叶斯方法依据贝叶斯定理。关于贝叶斯定理解释如下&#xff1a;首先我们设定在事件B条件下&#xff0c;发生事件A的条件概率&#xff0c;即 &#xff0c;从数学公式上&#xff0c;此条件概率等于事件A与事件B同时发生的概率除以事件B发生的概率。 上述…

代码随想录训练营第五十二天1143.最长公共子序列1035.不相交的线53. 最大子序和

1143.最长公共子序列 题目链接 1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 讲解链接 代码随想录 (programmercarl.com) 给定两个数组&#xff0c;求最长公共子序列&#xff0c;此时dp数组需要用二维的&#xff0c;dp[i][j]表示下表i-1.j-1所能拥有的最长公共…

状态模式-C++实现

状态模式是一种行为型设计模式&#xff0c;它允许对象内部状态发生改变时改变其行为&#xff0c;它将行为封装在不同的状态对象中&#xff0c;在运行时通过切换不同的状态可以表现出不同的行为。 状态模式一般有三种角色&#xff1a; 1、状态接口&#xff1a;定义了状态对象所…

Fiddler抓包工具之Fiddler+willow插件应用

安装Fiddler的安装包地址&#xff1a;fillderwillow 解压后安装fiddler4和willow1.4.*版本。 安装成功后&#xff0c;启动fiddler后会出现willow插件按钮&#xff1a; 说明安装成功。 重定向 willow重定向 进入willow界面后&#xff0c;通过右键->Add Project ->Add Ru…

鸿蒙开发学习笔记

快速入门 配置网络权限 1.打开项目的 module.json5 文件 2.在module 里面写下面代码 3.这样就可以使用网络图片了 4.模拟器上就可以正常显示网络图片了 5.官方文档有相吸说明 6. 华为官方编辑工具使用技巧&#xff08;内置文档&#xff09;&#xff0c;鼠标移动到标签上&…

对于Kotlin DSL的简单解析与使用

DSL(领域特定语言)是Kotlin所带来的强大语法特性之一&#xff0c;也是Java中所不存在的功能&#xff0c;JetBrain也基于DSL开发出了众多的开源库&#xff0c;Kotlin的开发者可以使用DSL来重构许多已有的代码&#xff0c;甚至有可能做到彻底抛弃HTML&#xff0c;XML&#xff0c;…

Mysql——》int(1)和 int(10)区别

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

【Python百宝箱】数据格式化大作战:探索Python强大的转换和验证库

前言 在现代数据处理和转换的领域中&#xff0c;Python成为了一种强大而灵活的工具。数据格式的转换和验证对于数据科学家、工程师和分析师而言是至关重要的任务。本文将介绍一系列Python库&#xff0c;它们能够处理各种数据格式&#xff0c;从JSON、XML到Excel和Pickle等&…

electron持久化cookie的方法,从session中获取

文章目录 1. 持久化方法2. 代码说明3. 补充 1. 持久化方法 session.defaultSession.cookies.get({}).then((cookies) > {// 恢复cookie现场cookies.forEach((cookiesItem) > {let { secure false, domain "", path "" } cookiesItem;BrowserWin…

零基础打靶—CTF4靶场

一、打靶的主要五大步骤 1.确定目标&#xff1a;在所有的靶场中&#xff0c;确定目标就是使用nmap进行ip扫描&#xff0c;确定ip即为目标&#xff0c;其他实战中确定目标的方式包括nmap进行扫描&#xff0c;但不局限于这个nmap。 2.常见的信息收集&#xff1a;比如平常挖洞使用…

Python标准库:math库【侯小啾python领航班系列(十六)】

Python标准库:math库【侯小啾python领航班系列(十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

【每日一题】找出叠涂元素

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;哈希表 写在最后 Tag 【哈希表】【数组】【2023-12-01】 题目来源 2661. 找出叠涂元素 题目解读 从左往右遍历 arr 给矩阵 mat 上色&#xff0c;在上色的过程中矩阵的某一行或者某一列的全部被上色了&#xff0c;返回…

(C语言)找出1-99之间的全部同构数

同构数&#xff1a;它出现在平方数的右边。例&#xff1a;5是25右边的数&#xff0c;25是625右边的数&#xff0c;即5和25均是同构数。 #include<stdio.h> int main() {for(int i 1;i < 100;i ){if((i*i % 10 i) || (i*i % 100 i))printf("%d\t%d\n",i,…

第6章 异步爬虫

目录 1. 协程的基本原理1.1 案例引入1.2 基础知识阻塞非阻塞同步异步多进程协程 1.3 协程的用法1.4 定义协程1.5 绑定回调1.6 多任务协程1.7 协程实现1.8 使用aiohttp安装使用 2. aiohttp的使用2.1 基本介绍2.2 基本实例2.3 URL参数设置2.4 其他请求类型2.5 POST请求表单提交JS…

Java数据结构之《哈希查找》题目

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来&#xff0c;就成为了大家的好帮手&#xff0c;学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了&#xff0c;莫名奇妙的成为了“帮凶”&#xff0c;一位研究人员利用 ChatGPT 创建了虚假的数据集&#xff0c;用来支持未知的科学假设。…