Vite中自制mock服务器(不使用第三方服务)

 更新时间:2023年04月16日 16:22:29   作者:陈楠112  
本文主要介绍了Vite中自制mock服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

为什么要 mock

  • 后台接口还没完成,但前端要用到接口
  • 我想篡改后台接口的结果,测试一些分支逻辑

起步

本篇文章会使用到 swraxiosvite-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>
  )
}

到此这篇关于Vite中自制mock服务器(不使用第三方服务)的文章就介绍到这了,更多相关Vite mock服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue.js组件tree实现无限级树形菜单

    Vue.js组件tree实现无限级树形菜单

    这篇文章主要为大家详细介绍了Vue.js组件tree实现无限级树形菜单代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Vue无后端配合实现导出功能的示例代码

    Vue无后端配合实现导出功能的示例代码

    这篇文章主要为大家详细介绍了Vue如何在无后端配合的情况下实现导出功能,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起了解一下
    2024-01-01
  • vue & vue Cli 版本及对应关系解读

    vue & vue Cli 版本及对应关系解读

    这篇文章主要介绍了vue & vue Cli 版本及对应关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 浅谈vue中所有的封装方式总结

    浅谈vue中所有的封装方式总结

    因为现在vue的流行,vue的各种插件都出来了,我们公司也是使用vue做项目,那么应该如何封装,本文就介绍一下如何封装,感兴趣的可以了解一下
    2021-07-07
  • vue3+vite:src使用require动态导入图片报错的最新解决方法

    vue3+vite:src使用require动态导入图片报错的最新解决方法

    这篇文章主要介绍了vue3+vite:src使用require动态导入图片报错和解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • vue 左滑删除功能的示例代码

    vue 左滑删除功能的示例代码

    这篇文章主要介绍了vue 左滑删除功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Element Cascader 级联选择器的使用示例

    Element Cascader 级联选择器的使用示例

    这篇文章主要介绍了Element Cascader 级联选择器的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Vue3解决Mockjs引入后并访问404(Not Found) 的页面报错问题

    Vue3解决Mockjs引入后并访问404(Not Found) 的页面报错问题

    mock.js:是一款模拟数据生成器,可以生成随机数据,拦截 Ajax 请求,使用mockjs模拟后端接口,可随机生成所需数据,模拟对数据的增删改查,本文给大家介绍了Vue3解决Mockjs引入后并访问404(Not Found) 的页面报错问题,需要的朋友可以参考下
    2025-04-04
  • Vue解决移动端弹窗滚动穿透问题

    Vue解决移动端弹窗滚动穿透问题

    这篇文章主要介绍了Vue解决移动端弹窗滚动穿透问题的方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • vue如何自定义组件v-model

    vue如何自定义组件v-model

    这篇文章主要介绍了vue如何自定义组件v-model问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论