news 2026/4/15 9:51:53

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/27 11:10:48

Vue—— Vue3 文件上传下载实现

背景问题: 需要实现文件上传下载功能。 方案思考: 封装文件上传下载方法。 具体实现: 文件上传下载工具: // utils/file.js import {ElMessage, ElUpload } from element-plus import request from @/utils/request// 文件上传工具类 export class FileUploadUtil {// 上…

作者头像 李华
网站建设 2026/4/9 10:14:27

YOLO26模型今日发布,致力于打造端到端计算范式的端侧AI新标杆

在前面的博文中我们学习了YOLO26的论文,感兴趣的话可以自行移步阅读: 《YOLO26: Key Architectural Enhancements and Performance Benchmarking for Real-time Object Detection——实时目标检测的关键架构增强与性能基准测试》 YOLO26 的关键架构改进…

作者头像 李华
网站建设 2026/4/5 12:48:41

交通仿真软件:SUMO_(18).性能优化与调试

性能优化与调试 在交通仿真软件SUMO中,性能优化和调试是确保仿真模型准确性和效率的关键步骤。本节将详细介绍如何通过不同的方法和技术来优化SUMO的性能,并提供一些调试技巧,帮助用户解决仿真过程中遇到的问题。 1. 仿真性能优化 1.1 网络优…

作者头像 李华
网站建设 2026/4/14 5:21:25

谷歌重新拥抱被冷落的JPEG XL图像格式

谷歌已将JPEG XL(JXL)图像格式支持添加到开源Chromium代码库中,这一决定逆转了2022年放弃该技术的立场。最近的一次代码提交集成并启用了JXL解码器,这意味着未来发布的Google Chrome和其他基于Chromium的浏览器将包含处理和显示JX…

作者头像 李华
网站建设 2026/4/13 18:17:36

ONLYOFFICE 的 Zotero 插件全新升级!界面优化 + 文献引用更灵活

ONLYOFFICE 编辑器的 Zotero 插件新版本1.0.6来了!此次更新聚焦提升使用便捷性,让用户能更自主地控制引用文献的创建与格式设置,为学术研究与论文写作提供更高效的支持。 界面焕新,操作更顺手 插件界面经过重新设计,让…

作者头像 李华
网站建设 2026/4/12 23:51:15

基于小程序的篮球场馆预订系统-计算机毕业设计源码+LW文档

摘 要 随着国家的迅猛发展和互联网技术的持续飞跃,现代生活节奏显著加快。为了更有效地管理时间、提升个人及工作效率,大众愈发倾向于借助互联网平台处理各类日常事务,这一趋势直接催生了微信小程序的蓬勃兴起。在此背景下,人们对…

作者头像 李华