vite-plugin-mock使用

本文介绍了如何在Vite项目中使用vite-plugin-mock插件进行接口模拟,包括安装配置、mock数据的创建和axios的使用实例。重点讲解了在开发和生产环境中的应用以及与代理服务器的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发流程很多,不同公司都有自己的一套流程,甚至一套公司里面不同的组都有自己单独的开发流程。
对前端来说,很多情况静态页面写好了,接口给了字段,要是有模拟的数据,页面开发完成,对接的时候只需要稍微调整。

所以mock的存在可以节省很多的时间,只不过以前都没用过,因为后端也有很多工具,从来没有前端自己mock过。
这次业务需要自己mock数据,所以就使用了一下,发现还挺好用的。

今天分享的是vite-plugin-mock,记录一下使用流程及一些用到的配置。

安装:
npm i  mockjs vite-plugin-mock -D
vite.config.ts 配置
import { UserConfigExport, ConfigEnv } from 'vite'

import { viteMockServe } from 'vite-plugin-mock'
import vue from '@vitejs/plugin-vue'

export default ({ command }: ConfigEnv): UserConfigExport => {
  return {
    plugins: [
      vue(),
      viteMockServe({
        mockPath: 'mock',
        localEnabled: command === 'serve',
      }),
    ],
  }
}
在根目录下新建mock文件夹,新建文件
import { MockMethod } from 'vite-plugin-mock';

const arr: any = [];
for (let index = 0; index < 20; index++) {
  arr.push({
    customer_name: 'wade',
    status_text: '登录成功',
    os: 'Windows 10',
    browser: 'Chrome(99.0.4844.51)',
    ip: '192.168.9.110',
    created: '2021-12-14 10:41:02',
    location: '局域网 局域网',
  });
}

const logList = {
  total: 31,
  page: 1,
  page_size: 20,
  list: arr,
};

const statusList = {
  data: [
    { label: '全部', value: 0 },
    { label: '待审核', value: 1 },
  ],
};

export default [
  {
    url: '/mock/api/getList',
    method: 'post',
    response: () => {
      return logList;
    },
  },
  {
    url: '/mock/api/getStatusList',
    method: 'get',
    response: () => {
      return statusList;
    },
  },
] as MockMethod[];

开发的时候这样就已经可以了,安装个axios,实验一下:

axios.get("/mock/api/getList").then((res) => {
  console.log(res);
});

接口的模拟请求就实现了。至于生产环境使用,我是觉得不可能会用到,可以直接不用理会。

vite-plugin-mock实现其实就是本地启动了一个服务,然后进行一些数据和模拟请求的各个配置。好比我自己用node启动一个接口:

const http=require('http');

http.createServer(function(requset,response){
   response.setHeader('Access-Control-Allow-Credentials', 'true');
   response.setHeader('Access-Control-Allow-Origin', '*');
   setTimeout(() => {
      response.end('#test{color:red}');
   }, 3000);
}).listen(3001);

console.log('run port 3001')

只不过vite-plugin-mock用的是connect实现的接口,你可以复制出来在浏览器访问看看就明白了。

但是有一点没理解,项目启动代理的情况下,如果本地启动了一个mock接口,请求就会是本地启动的接口,如果本地没有,会被代理到设置的代理地址。
我觉得是代理proxy实现的,没查到xhr会自动去实现这个功能。

所以开发的时候,服务器已经有的接口可以请求服务器,没有的接口自己模拟,当要联调的时候再去mock里面把地址改一下。

至于其它配置,可以去看看是否需要:
vite-plugin-mock

tips

这边用的是npm init @vitejs/app创建项目,遇见了几个小问题

Cannot find module ‘ws’

试了一下打包,结果报错了:

Cannot find module 'ws' or its corresponding type declarations.

看了一下,vite版本的^2.8.0,ws在devDependencies里面,自己安装了npm i --save-dev @types/ws就可以打包了。
去GitHub提了个issue,才一个小时就关闭了,原来早就有人提了。

“import.meta” is not available

去vite官网看了一下:
Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块
这只是一个 Vite 独有的功能而不是一个 Web 或 ES 标准

vite-plugin-mock生产环境使用也建议使用 import.meta.glob功能来进行全部导入,但是我打印了一下是一个空对象。

欢迎关注订阅号 coding个人笔记

### Vite-plugin-mock 插件使用教程 #### 安装方法 为了在项目中集成 `vite-plugin-mock`,需通过 npm 或 yarn 进行安装。对于开发环境而言,推荐以开发依赖的形式来安装此插件及其关联库[^3]。 ```bash npm install mockjs vite-plugin-mock --save-dev ``` #### 基础配置 完成安装之后,在项目的根目录下创建名为 `mock` 的文件夹用于存放所有的模拟数据脚本。接着修改 `vite.config.ts` 文件引入并配置该插件: ```typescript // vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import MockPlugin from 'vite-plugin-mock' export default defineConfig({ plugins: [ vue(), MockPlugin() ] }) ``` 上述代码展示了如何将 `MockPlugin()` 添加至 Vite 构建工具的插件列表内[^2]。 #### 创建第一个模拟接口 在之前建立好的 `mock` 文件夹里新建 JavaScript 文件定义 API 接口返回的数据格式。例如可以命名为 `api.js`: ```javascript // src/mock/api.js import Mock from 'mockjs'; const Random = Mock.Random; export default { 'GET /api/users': (req, res) => { let result = []; for(let i=0; i<10;i++){ result.push(Mock.mock({ id:Random.guid(), name:Random.cname() , age:Random.integer(18,60), })) } return res.json({ code: 200, data:result }); }, } ``` 这段代码实现了当访问 `/api/users` 路径时会随机生成十个用户的个人信息作为响应体发送给客户端。 #### 启动服务测试效果 一切准备就绪后运行命令启动本地服务器即可看到刚才设置的效果了。通常情况下执行如下指令就可以开启调试模式下的 Webpack Dev Server : ```bash npm run dev ``` 此时打开浏览器输入 http://localhost:3000 就能查看到由 `vite-plugin-mock` 提供的服务端渲染页面,并且可以通过开发者工具网络面板观察到请求被成功拦截并且得到了预期的结果集。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值