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服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • dataV大屏在vue中的使用方式

    dataV大屏在vue中的使用方式

    这篇文章主要介绍了dataV大屏在vue中的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 在Vue-cli里应用Vuex的state和mutations方法

    在Vue-cli里应用Vuex的state和mutations方法

    今天小编就为大家分享一篇在Vue-cli里应用Vuex的state和mutations方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue+Element-ui日历排班自定义实例代码

    Vue+Element-ui日历排班自定义实例代码

    这篇文章主要给大家介绍了关于Vue+Element-ui日历排班自定义的相关资料,有现成的日历插件但是不符合需求,所以项目中使用vue+element的表格组件自己实现一个日历组件,需要的朋友可以参考下
    2023-09-09
  • 浅聊一下Vue2中的functional组件

    浅聊一下Vue2中的functional组件

    最近听到有人提到了Vue2的functional组件,大致上是说这个东西没有生命周期,在渲染层面上,会减少很多的消耗,一番处理之后,首屏时间和内存都能减少不少,所以本文小编就来和大家聊聊Vue2中的functional组件<BR>
    2023-08-08
  • Vue实现购物车详情页面的方法

    Vue实现购物车详情页面的方法

    这篇文章主要介绍了Vue实战之购物车详情页面的实现,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 一文掌握在Vue3中书写TSX的使用方法

    一文掌握在Vue3中书写TSX的使用方法

    但随着vue3版本的到来,对typescript的支持度越来越高,tsx语法也被大部分人越来越接收,所以很多项目都是搭配 Vue3 + TS 进行的,这篇文章主要介绍了一文掌握在Vue3中书写TSX的方法,需要的朋友可以参考下
    2023-05-05
  • Vue的Options用法说明

    Vue的Options用法说明

    这篇文章主要介绍了Vue的Options用法说明,具有很好的参考价值,希望对大家有所
    2020-08-08
  • vue 实现类似淘宝星级评分的示例

    vue 实现类似淘宝星级评分的示例

    下面小编就为大家分享一篇vue 实现类似淘宝星级评分的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 使用element-ui +Vue 解决 table 里包含表单验证的问题

    使用element-ui +Vue 解决 table 里包含表单验证的问题

    这篇文章主要介绍了使用element-ui +Vue 解决 table 里包含表单验证的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue-cli3.0 环境变量与模式配置方法

    vue-cli3.0 环境变量与模式配置方法

    vue-cli3.0移除了配置文件目录: config和build文件夹。可以说是非常的精简了,那移除了配置文件目录后如何自定义配置环境变量和模式呢?这篇文章主要介绍了vue-cli3.0 环境变量与模式 ,需要的朋友可以参考下
    2018-11-11

最新评论