Vite中自制mock服务器(不使用第三方服务)
作者:陈楠112 时间:2024-04-28 09:27:14
为什么要 mock
?
后台接口还没完成,但前端要用到接口
我想篡改后台接口的结果,测试一些分支逻辑
起步
本篇文章会使用到 swr
、axios
、vite-plugin-mock
,请自行安装
配置 vite
进入 vite.config.ts
,添加以下代码
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { viteMockServe } from 'vite-plugin-mock'
export default defineConfig(({ command }) => ({
plugins: [
react(),
viteMockServe()
],
}))
创建 mock 数据
创建
mock/test.ts
文件
mkdir mock/ && touch mock/test.ts
添加 mock 数据
import { MockMethod } from 'vite-plugin-mock'
export default [
{
url: '/api/v1/me',
method: 'get',
response: () => {
return {
id: 1,
name: 'Niki'
}
}
}
] as MockMethod[]
使用 useSWR
在使用到的组件中用:
import useSWR from 'swr'
import axios from 'axios'
export const Home: React.FC = () => {
const { data, error, isLoading } = useSWR('/api/v1/me', path => {
return axios.get(path)
})
if (isLoading) {
return <div>加载中...</div>
}
if (error) {
return <div>加载失败</div>
}
return (
<div>Hi, I am {data.name}!</div>
)
}
判断是否在开发环境
在 vite.config.ts
里添加
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { viteMockServe } from 'vite-plugin-mock'
// https://vitejs.dev/config/
export default defineConfig(({ command }) => ({
+ define: {
+ isDev: command === 'serve' // 它会写在 window.isDev = true / false
+ },
plugins: [
react(),
viteMockServe()
],
}))
封装请求
这里只是简单的封装一下
Axios
mkdir src/lib/ touch src/lib/ajax.tsx
import axios from 'axios'
axios.defaults.baseURL = isDev ? '/' : 'xxx' // 'xxx' 改为线上的 ip:端口
axios.defaults.headers.post['Content-Type'] = 'application/json'
axios.defaults.timeout = 10000
export const ajax = {
get: (path: `/${string}`) => {
return axios.get(path)
}
}
最终使用
import useSWR from 'swr'
import { ajax } from '../lib/ajax'
export const Home: React.FC = () => {
const { data, error, isLoading } = useSWR('/api/v1/me', path => {
return ajax.get(path)
})
if (isLoading) {
return <div>加载中...</div>
}
if (error) {
return <div>加载失败</div>
}
return (
<div>Hi, I am {data.name}!</div>
)
}
来源:https://juejin.cn/post/7222237243527233573
标签:Vite,mock服务器
0
投稿
猜你喜欢
详解Python函数作用域的LEGB顺序
2021-05-06 15:00:10
python爬虫实现POST request payload形式的请求
2023-11-07 21:08:55
mybatis如何实现的数据库排序
2024-01-24 16:35:32
PHP实现定时生成HTML网站首页实例代码
2023-06-12 05:39:40
MySQL数据库表被锁、解锁以及删除事务详解
2024-01-24 14:17:51
经典SQL语句大全
2009-08-26 16:44:00
Python错误的处理方法
2021-08-01 05:38:15
python 如何实现跳过异常继续执行
2022-07-03 11:34:02
Python实现自动化处理PDF文件的方法详解
2024-01-02 07:02:21
pyhon如何把程序打包为whl
2023-06-16 11:30:48
jupyter 使用Pillow包显示图像时inline显示方式
2021-09-08 00:42:02
如何用python批量调整视频声音
2023-10-14 06:51:57
SQL触发器定义与使用
2024-01-28 09:21:27
一个css垂直水平居中布局,css效果
2008-11-03 11:40:00
python 通过麦克风录音 生成wav文件的方法
2023-03-21 05:27:50
用asp实现的获取文件夹中文件的个数的代码
2011-03-08 11:02:00
python数据结构leetcode338比特位计数算法
2023-05-06 21:24:33
跟老齐学Python之啰嗦的除法
2022-12-18 12:47:38
Python开发时报TypeError: ‘int‘ object is not iterable错误的解决方式
2023-08-23 20:30:05
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2024-04-22 12:49:59