您好,登錄后才能下訂單哦!
本篇內容主要講解“Vite中怎么自制mock服務器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Vite中怎么自制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> ) }
到此,相信大家對“Vite中怎么自制mock服務器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。