news 2026/3/24 16:04:19

Vue——Vue3 Mock 数据与联调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue——Vue3 Mock 数据与联调

背景问题:
开发阶段需要 Mock 数据。

方案思考:
使用 Mock 服务进行前后端并行开发。

具体实现:
使用 MSW (Mock Service Worker) 进行 Mock:

// mock/index.jsimport{setupWorker}from'msw/browser'import{rest}from'msw'import{userHandlers}from'./user'// 创建 Mock workerexportconstworker=setupWorker(...userHandlers)// 启动 Mock 服务exportasyncfunctionstartMockServer(){if(import.meta.env.VITE_APP_MOCK==='true'){awaitworker.start({onUnhandledRequest:'bypass',// 不处理的请求直接转发serviceWorker:{url:'/mockServiceWorker.js'}})console.log('Mock 服务已启动')}}

用户模块 Mock 数据:

// mock/user.jsimport{rest}from'msw'// 模拟用户数据constmockUsers=[{id:1,username:'admin',email:'admin@example.com',status:'1',createTime:'2023-01-01'},{id:2,username:'user1',email:'user1@example.com',status:'1',createTime:'2023-01-02'},{id:3,username:'user2',email:'user2@example.com',status:'0',createTime:'2023-01-03'}]// 用户相关的 Mock 处理器exportconstuserHandlers=[// 获取用户列表rest.get('/api/system/user/list',(req,res,ctx)=>{constpage=parseInt(req.url.searchParams.get('pageNum'))||1constsize=parseInt(req.url.searchParams.get('pageSize'))||10conststart=(page-1)*sizeconstend=start+sizeconstusers=mockUsers.slice(start,end)returnres(ctx.json({code:200,data:{rows:users,total:mockUsers.length}}))}),// 获取用户详情rest.get('/api/system/user/:id',(req,res,ctx)=>{const{id}=req.paramsconstuser=mockUsers.find(u=>u.id===parseInt(id))if(!user){returnres(ctx.status(404),ctx.json({code:404,message:'用户不存在'}))}returnres(ctx.json({code:200,data:user}))}),// 创建用户rest.post('/api/system/user',async(req,res,ctx)=>{constuserData=awaitreq.json()// 模拟创建成功constnewUser={id:mockUsers.length+1,...userData,createTime:newDate().toISOString().split('T')[0]}mockUsers.push(newUser)returnres(ctx.json({code:200,data:newUser,message:'创建成功'}))}),// 更新用户rest.put('/api/system/user',async(req,res,ctx)=>{constuserData=awaitreq.json()constindex=mockUsers.findIndex(u=>u.id===userData.id)if(index===-1){returnres(ctx.status(404),ctx.json({code:404,message:'用户不存在'}))}mockUsers[index]={...mockUsers[index],...userData}returnres(ctx.json({code:200,data:mockUsers[index],message:'更新成功'}))}),// 删除用户rest.delete('/api/system/user/:id',(req,res,ctx)=>{const{id}=req.paramsconstindex=mockUsers.findIndex(u=>u.id===parseInt(id))if(index===-1){returnres(ctx.status(404),ctx.json({code:404,message:'用户不存在'}))}mockUsers.splice(index,1)returnres(ctx.json({code:200,message:'删除成功'}))})]

使用 Vite 插件进行 Mock:

// vite/plugins/mock.jsimport{defineConfig,loadEnv}from'vite'import{viteMockServe}from'vite-plugin-mock'exportfunctionconfigMockPlugin(isBuild){returnviteMockServe({ignore:/^_/,// 忽略以下划线开头的文件mockPath:'mock',// mock文件夹位置localEnabled:!isBuild,// 开发环境启用prodEnabled:false,// 生产环境不启用injectCode:`import { setupProdMockServer } from '../mock/index.js'; setupProdMockServer();`,})}

在 main.js 中集成 Mock:

// main.jsimport{createApp}from'vue'importAppfrom'./App.vue'importpiniafrom'@/stores'importrouterfrom'@/router'asyncfunctionstartApp(){// 开发环境启动 Mock 服务if(import.meta.env.DEV){const{startMockServer}=awaitimport('@/mock')awaitstartMockServer()}constapp=createApp(App)app.use(pinia)app.use(router)app.mount('#app')}startApp()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 7:36:35

【计算机毕业设计案例】基于python卷神经网络的纸箱是否有破损识别基于python深度学习的纸箱是否有破损识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/13 7:09:53

急刹事件作为道路风险评估新指标研究

我们通过分析Android Auto收集的急刹事件(HBEs)与实际道路事故率之间的关系,确立了两者之间的正相关性。研究证实,急刹事件频率较高的道路段确实具有显著更高的事故风险,这表明此类事件可以作为道路安全评估的前瞻性指…

作者头像 李华
网站建设 2026/3/15 0:51:30

部署AI智能体的七个实战经验教训

部署AI智能体并非传统的软件发布,需要在实际操作中投入大量工作和规划才能让这些工具发挥生产力。顶层策略包括给予智能体一定的自由度,但不能过度放任,同时还需要重新思考传统的投资回报率衡量标准。有效的AI开发和管理需要在控制、投资、治…

作者头像 李华
网站建设 2026/3/24 14:42:52

压测 把自己 压进去了

凌晨一点,城中村的出租屋里,只有电脑屏幕的蓝光映着小李的脸。作为一名自由后端开发者,他不用受公司制度约束,日常接些接口开发、bug修复的散活,大把空闲时间都耗在了钻研技术上——而压测各类接口,成了他藏…

作者头像 李华
网站建设 2026/3/13 18:37:34

项目的逻辑和流程

项目的逻辑和流程 在互联网项目的推进过程中,清晰的逻辑框架和规范的执行流程是保障项目稳定落地的核心。无论是小型工具开发还是大型系统搭建,都离不开“从无到有、从测试到上线”的全流程管控。 一、项目核心逻辑阶段核心目标关键动作参与角色交付成果…

作者头像 李华
网站建设 2026/3/23 16:42:20

招聘外包口碑品牌榜前10名测评+选型全套指南!

“旺季急招50人,外包承诺3天到岗,结果一周才凑20人,一半还不会用系统”“花大价钱找外包,招来的人连基础操作都不会,直接亏了几十万”……做HR的谁没在招聘外包上踩过坑?现在招聘外包市场规模超3000亿&…

作者头像 李华