news 2026/4/27 0:12:12

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/22 11:46:14

无线网络仿真:6G网络仿真_(10).6G与5G网络仿真对比

6G与5G网络仿真对比 在无线网络技术的发展过程中,5G网络的仿真和测试已经积累了大量的经验和工具。然而,随着6G技术的提出和发展,仿真技术也面临着新的挑战和机遇。本节将详细对比6G与5G网络仿真在原理、工具、性能指标和应用场景等方面的不同…

作者头像 李华
网站建设 2026/4/24 1:13:39

交通仿真软件:SUMO_(19).交通仿真中的大数据处理技术

交通仿真中的大数据处理技术 在交通仿真软件中,大数据处理技术是实现高效、准确仿真结果的关键。随着城市交通系统的复杂性和数据量的不断增加,如何有效地处理和利用这些数据成为了交通仿真领域的一个重要课题。本节将详细介绍如何在交通仿真软件中应用大…

作者头像 李华
网站建设 2026/4/24 23:44:57

Salesforce推出全新升级版Slackbot智能体

Salesforce公司今日正式发布了其大幅增强版的Slackbot人工智能助手,该助手内置于Slack平台中。该公司在去年10月举办的Dreamforce 2025大会上首次展示了这一升级版本。原版Slackbot主要专注于显示通知等相对简单的任务。新版本大幅扩展了该工具可以自动化的使用场景…

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

AI大模型30个核心术语详解,从小白到入门

文章按照AI产品的四层架构(基座层、模型层、应用层、用户层)详细解释了30个AI领域的重要术语。基座层涵盖算法、算力、数据相关概念;模型层介绍AI核心能力载体;应用层展示AI落地场景;用户层关注AI与用户交互。这些术语…

作者头像 李华
网站建设 2026/4/19 19:39:44

vrrp实例script和 real_server中的HTTP_GET健康检查区别,使用场景总结

Keepalived核心健康检查:VRRP Script & HTTP_GET 在Keepalived高可用集群部署中,健康检查是保障服务连续性的核心机制。其中VRRP实例的script脚本检查与real_server的HTTP_GET检查是最常用的两种方式。 一、核心差异:从检测对象到作用机制…

作者头像 李华
网站建设 2026/4/17 16:02:10

Vue3:泛型类型声明 vs 运行时选项声明 语法对比

Vue 3 提供了两种 props 声明方式&#xff1a;泛型类型声明和运行时选项声明。泛型类型声明&#xff08;defineProps<{prop:Type}>()&#xff09;在编译时进行类型检查&#xff0c;完全支持 TypeScript&#xff0c;适合新项目和追求类型安全的场景。运行时选项声明&#…

作者头像 李华