vite-plugin-mockserver

2 min read
Table of Contents

安装依赖

  1. 首先我们创建一个vite项目

    shellTerminal window
    pnpm create vite
  2. 然后我们要进行依赖的安装

    shellTerminal window
    pnpm add mockjs @types/mockjs
  3. 随后我们开始编写插件

    ts
    import { defineConfig } from 'vite'
    import react from '@vitejs/plugin-react'
    import { type Plugin } from 'vite'
    import mockjs from 'mockjs'
    import url from 'node:url'
    const viteMockServer = (): Plugin => {
    return {
    name: 'vite-mock-server',
    configureServer(server) {
    //使用中间件来完成mock接口
    server.middlewares.use('/api/list', (req, res) => {
    //通过url.parse来获取参数对象
    const parseUrl = url.parse(req.originalUrl!, true).query
    //保证返回的数据被正常序列化
    res.setHeader('content-type', 'application/json')
    const data = mockjs.mock({
    'list|100': [
    {
    'id|+1': 1,
    name: parseUrl.keyword,
    'address': '@county(true)'
    }
    ]
    })
    //将数据返回给前端
    res.end(JSON.stringify(data))
    })
    }
    }
    }
    export default defineConfig({
    plugins: [react(), viteMockServer()],
    })
  4. 最后我们可以通过fetch来获取数据或者通过网页路由直接访问

tsx
import { useEffect, useState } from "react"
function App() {
const [list, setList] = useState<{
name: string,
address: string,
id: number
}[]>([])
useEffect(() => {
const fetchData = async () => {
const res = await (await fetch('/api/list?keyword=yujimaka')).json()
setList(res.list)
}
fetchData()
}, [])
return <>
{list.map(item => <div>
{`${item.name}-${item.id}-${item.address}`}
</div>)}
</>
}
export default App

后记

My avatar

感谢你读到这里。

这座小站更像一份持续维护的“终端笔记”:记录我解决问题的过程,也记录走过的弯路。

如果这篇内容对你有一点点帮助:

  • 点个赞 / 收藏一下,方便你下次回来继续翻
  • 欢迎在评论区补充你的做法(或者指出我的疏漏)
  • 想持续收到更新:可以订阅 RSS(在页面底部)

我们下篇见。


More Posts

评论

评论 (0)

请先登录后再发表评论

加载中...