Vue3 -- mock数据完整配置并调试【项目集成6】

引言:

‌Mock在前端开发中的作用主要是模拟后端接口数据,以便前端开发者能够提前进行页面和功能的开发、调试,而无需等待后端提供真实的接口数据‌。Mock数据可以加速前后端开发的协同,避免因数据延迟导致的开发阻塞‌。【摘自百度】

配置mock:

安装依赖:

pnpm install -D vite-plugin-mock mockjs

vite-plugin-mock和mockjs都要安装,如上。

配置mock:

打开vite.config.js文件,进行配置:
其中官网提到,这个配置要暴露一个箭头函数,箭头函数返回一个配置对象。于是我们需要将配置对象改成箭头函数的形式。这里的 {command} 是用来检测当前开发环境的,即回调函数中我们注入一个command 来检测环境。保证了在开发阶段可以使用mock接口。也可以点击这里看官网自行配置。
在这里插入图片描述

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
// 引入mock接口需要的插件
import { viteMockServe } from 'vite-plugin-mock'
// 引用svg需要的插件
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";

export default defineConfig(({command})=>{
  return {
    plugins: [
    vue(),
    viteMockServe({
      localEnabled: command === 'serve',// 保证开发阶段可以使用mock接口
    }),
    createSvgIconsPlugin({
      // Specify the icon folder to be cached
      iconDirs: [path.resolve(process.cwd(), "src/assets/icons")],
      // Specify symbolId format
      symbolId: "icon-[dir]-[name]"
    })
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "src") // 相对路径别名配置,使用 @ 代替 src
    }
  },
  // scss全局变量的配置
  css: {
    preprocessorOptions: {
      scss: {
        javascriptEnabled: true,
        additionalData: '@import "./src/styles/variable.scss";'
      }
    }
  }
  }
});

使用mock:

在根目录下创建mock文件夹,mock文件夹下创建一个user.ts文件来存储用户的信息并对外暴露一个数组,数组里面包含用户登录和获取用户信息两个接口。
在这里插入图片描述

// createUserList:函数执行返回一个数组,数组里面包含两个用户信息
function createUserList() {
    return [
        {
            userId: 1,
            avatar:
                'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
            username: 'admin',
            password: '111111',
            desc: '平台管理员',
            roles: ['平台管理员'],
            buttons: ['cuser.detail'],
            routes: ['home'],
            token: 'Admin Token',
        },
        {
            userId: 2,
            avatar:
                'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
            username: 'system',
            password: '111111',
            desc: '系统管理员',
            roles: ['系统管理员'],
            buttons: ['cuser.detail', 'cuser.user'],
            routes: ['home'],
            token: 'System Token',
        },
    ]
}

// 对外暴露一个数组:数组里面包含两个接口
export default [
    // 用户登录接口
    {
        url: '/api/user/login',//请求地址
        method: 'post',//请求方式
        response: ({ body }) => {
            //获取请求体携带过来的用户名与密码
            const { username, password } = body;
            //调用获取用户信息函数,用于判断是否有此用户
            const checkUser = createUserList().find(
                (item) => item.username === username && item.password === password,
            )
            //没有用户返回失败信息
            if (!checkUser) {
                return { code: 201, data: { message: '账号或者密码不正确' } }
            }
            //如果有返回成功信息
            const { token } = checkUser
            return { code: 200, data: { token } }
        },
    },
    // 获取用户信息
    {
        url: '/api/user/info',
        method: 'get',
        response: (request) => {
            //获取请求头携带token
            const token = request.headers.token;
            //查看用户信息是否包含有次token用户
            const checkUser = createUserList().find((item) => item.token === token)
            //没有返回失败的信息
            if (!checkUser) {
                return { code: 201, data: { message: '获取用户信息失败' } }
            }
            //如果有返回成功信息
            return { code: 200, data: {checkUser} }
        },
    },
]

测试使用mock数据:

安装axios:

pnpm install axios

测试:

我们在main.ts文件下写测试代码:
在这里插入图片描述
我们发现可以请求到假的数据:
在这里插入图片描述
在这里插入图片描述
并且如果我们输入错误的密码,返回的也是我们所期待的:
在这里插入图片描述

在这里插入图片描述

### vue3项目中使用vite-plugin-mock调试问题及解决方案 #### 插件安装与基础配置 对于vue3+vite项目,在集成`vite-plugin-mock`时,需先通过npm安装必要的依赖包。这包括`mockjs`, `vite-plugin-mock`以及用于发起HTTP请求的库如`axios`[^2]。 ```bash npm i mockjs vite-plugin-mock --save-dev npm i axios ``` 接着,在项目的构建配置文件`vite.config.ts`内引入配置该插件: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import viteMockServe from 'vite-plugin-mock' export default defineConfig({ plugins: [ vue(), viteMockServe({ supportTs: false, logger: true, mockPath: "mock", // 设置相对路径到mock文件夹位置 }) ] }) ``` 上述代码展示了如何在Vite配置中启用`vite-plugin-mock`插件,指定了模拟数据所在的目录为根级别的`mock`文件夹[^4]。 #### 常见错误处理 ##### localEnabled属性未定义导致的报错 当尝试启动开发服务器却遭遇失败,可能是由于`localEnabled`选项缺失所引起的。为了修复这个问题,可以在调用`viteMockServe()`函数时显式指定此参数: ```javascript viteMockServe({ ...otherOptions, localEnabled: true, // 启用本地模式 }) ``` 这样可以确保即使是在生产环境中也能正常加载mock服务[^3]。 ##### 接收到HTML而非JSON格式的数据 如果应用程序接收到的是完整的网页文档而不是预期中的JSON对象,则可能是因为代理设置不当造成的。确认`.env`文件里是否有正确的API前缀声明,且检查是否正确设置了跨域资源共享(CORS)策略。另外还需验证`baseURL`字段是否指向了正确的端口和服务名。 此外,考虑到VSCode编辑器内部可能出现语法高亮或提示符显示异常的情况——即所谓的“波浪线”,这类现象通常不会影响实际编译过程;但如果确实造成了困扰,可以通过调整IDE内置ESLint规则来消除这些警告信息[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值