vite-plugin-mock前端自行模拟接口返回数据的插件

中文文档:[https://gitcode.com/vbenjs/vite-plugin-mock/blob/main/README.zh_CN.md)
参考其他博主文档:
【博主:火山犬】三分钟教你怎么用vite-plugin-mock和mockjs
【博主:木子静静】vue3:vite-plugin-mock插件的使用过程
【博主:木子静静】vue3:vite-plugin-mock插件的使用过程
【博主:wade3po】vite-plugin-mock使用
【博主:哥很冷漠】在vite(vue)项目中使用mockjs

以下是我自己的简单应用记录:

安装

npm i  mockjs -S
npm i vite-plugin-mock -D

导入、配置(vite.config.js)

import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteMockServe } from 'vite-plugin-mock'

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。
  const env = loadEnv(mode, process.cwd(), '')
  return {
    // vite 配置
    // base:'./',
    define: {
      __APP_ENV__: JSON.stringify(env.APP_ENV),
    },
    plugins: [
      vue(),
      viteMockServe({
        mockPath: 'mock',
        localEnabled: true, // 开发打包开关 true时打开mock  false关闭mock
        prodEnabled: false, //生产环境下为false,这样就不会被打包到生产包中
      }),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    server:{
      proxy: {
        '/api': {
          target: 'http://locallhost:8080',
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, '')
        }
      }
    }
  }
})

使用

目录结构

在这里插入图片描述
注意:这里,mock文件夹的创建位置及文件名需要和前面vite.config.js里的mockPath配置的一致,mock底下的文件名没有特殊要求

/mock/user.js

这里你可以自己根据自己需要划分的api模块进行文件命名,没有具体要求。不划分模块,全写一起也是可以的

function createUserList(){
	return [
		{
			userId:1,
			avatar:"",
			username:"admin",
			password:'123456',
			desc:'平台管理员',
			roles:['平台管理员'],
			routes:['home'],
			token:"Admin Token"
		},
		{
			userId:2,
			avatar:"",
			username:"system",
			password:'123456',
			desc:'系统管理员',
			roles:['系统管理员'],
			routes:['system'],
			token:"System Token"
		}
	]
}

export default [
	// 用户登录接口
	{
		url:'/api/user/login',
		method:'post',
		response:(({body})=>{
			const {username,password} = body
			const checkUser = createUserList().find((item)=>{
				return item.username === username && item.password === password
			})
			if(!checkUser){
				return {code:201,data:{message:'账号或密码不正确'}}
			}
			let {token} = checkUser
			return {code:200,data:{token}}
		})
	},
	//获取用户信息
	{
		url:'/api/user/userInfo',
		method:'post',
		response:(({body})=>{
			const {token} = body
			const checkUser = createUserList().find((item)=>{
				return item.token === token 
			})
			if(!checkUser){
				return {code:201,data:{message:'token失效'}}
			}
			return {code:200,data:{checkUser}}
		})
	}
]

具体在页面请求中的使用

<template>
  <h1>vite-plugin-mock插件</h1>
  <p>模拟请求到的数据:</p>
  <p>token:</p>
  <p>{{ token }}</p>
  <p>userInfo:</p>
  <p>{{ userInfo }}</p>
</template>

<script setup>
import { ref } from 'vue'
import axios from 'axios';
let token = ref(null);
let userInfo = ref(null);

axios.post('/api/user/login',{username:'admin',password:'123456'}).then(({data: {data}}) => {
  console.log(data,'token---------------');
  if(data && data.token) {
    token = data.token;
    axios.post('/api/user/userInfo',{token:token}).then(({data:{data}}) => {
      console.log(data,'userInfo---------------');
      userInfo = data;
    })
  }
})
</script>

注意事项

注意不要把mock打包进生产包里了,具体看vite.config.js里的配置
我觉得这个只适合在项目前期,项目开发环境还没有健全,没办法调测试接口进行开发的时候用;当项目开发环境健全的时候,我们直接调开发环境接口进行开发,这个mock可以直接不要

相关推荐

  1. :vite-plugin-electron

    2024-06-16 15:40:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 15:40:02       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 15:40:02       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 15:40:02       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 15:40:02       14 阅读

热门阅读

  1. btstack协议栈实战篇--HID Mouse LE

    2024-06-16 15:40:02       7 阅读
  2. 单目物体测距

    2024-06-16 15:40:02       8 阅读
  3. text-underline-offset的作用是什么,怎么使用

    2024-06-16 15:40:02       7 阅读
  4. Go日志组件Zap的基本使用

    2024-06-16 15:40:02       9 阅读
  5. CAP和Base

    2024-06-16 15:40:02       7 阅读
  6. HIL测试-车辆模型

    2024-06-16 15:40:02       6 阅读
  7. C语言指针与数组的区别

    2024-06-16 15:40:02       6 阅读
  8. Python在SQLite中的应用:从入门到进阶

    2024-06-16 15:40:02       6 阅读