news 2026/4/17 22:32:00

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/4/17 16:06:53

认识es的多个维度

我们认识ES,认识到什么程度,会用到什么程度才算真正的认识呢。 我想我们可以从这几个角度去认识es 1.部署的角度 2.dsl,创建json格式,创建mapping,映射 3.springboot兼容es,使用java操作es 4.实际项目中es的…

作者头像 李华
网站建设 2026/4/18 7:24:43

内存短缺意外带来好处:AI PC炒作降温

内存价格飙升对今年想要购买、组装或升级电脑的人来说是坏消息,但对那些厌倦了所谓"AI PC"宣传的人来说,这可能是个好消息。据Ars Technica报道,由生成式AI热潮推动的数据中心需求不断增长,导致内存和闪存芯片短缺&…

作者头像 李华
网站建设 2026/4/18 8:33:19

三星与是德科技验证5G卫星间直连通信技术

是德科技宣布了一项"突破性"成果,使用三星下一代调制解调器芯片组,在n252频段成功实现了端到端实时新无线电非地面网络(NR-NTN)连接。项目背景与意义两家公司指出,可靠的全球连接正成为消费者、车辆、物联网设备和关键通信日益增长…

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

Playwright测试调试技巧:断点、日志与跟踪查看器

调试自动化测试是每个测试工程师的必修课。即使编写了最完善的测试脚本,也难免遇到元素定位失败、异步加载问题或难以复现的缺陷。今天,我将分享Playwright中三个核心调试技巧,这些技巧在实际工作中帮我节省了无数时间。 一、断点调试&#…

作者头像 李华
网站建设 2026/4/18 8:15:07

深度学习毕设项目推荐-基于python深度学习的纸箱是否有破损识别

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

作者头像 李华