Vue 中使用Mock模拟接口数据

1,017 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情

对于 Mock,官方的介绍是:“生成随机数据,拦截 Ajax 请求”。

在前端没有真实调用接口时,往往会选择使用 mock 数据来进行数据的渲染,操作简便,生成的数据同时可以增加单元测试的真实性。 详细可参考:MockJS 官方

接下来我们在 Vue 项目中配置 mock。

安装mockjs

npm install mockjs --save-dev

配置

  1. 首先在项目的根目录中建立一个 mock 文件夹

  2. vue.config.js 中添加 mock 配置代码:

before: require('./mock/mock-server.js')

整体结构如下:

image.png
  1. 在 main.js 中导入 mock
import { mockXHR } from '../mock'
if (process.env.NODE_ENV === 'production') {
  mockXHR()
}
  1. 在 mock 文件夹下建立一个 index.js 文件,并做如下定义:
  • Mock.Random 用来生成随机数据
  • Mock.mock() 根据数据模板生成模拟数据
  • dataList 数组用来存放模拟的数据
import Mock from 'mockjs'
const Random = Mock.Random
const dataList = []
for (let i = 0; i < 10; i++) {
  deptList.push({
    'id|+1': i, // 从i开始,每次 +1 的一个数字
    'name': '@cname', // 生成随机中文名字
    'number|1-100': 100, // 生成1-100之间的随机数字
    'remark': Random.cparagraph(), //生成随机生成中文
   
  })
}
 
Mock.mock('/api/getData', 'get', dataList)
export default []
image.png

除了基本的使用之外,还有·很多进行数据模板定义、占位符定义的方式:

比如:

  • Random.date() // 生成随机日期
  • @url() // 生成随机 url
  • @color // 生成随机颜色
  • ...

image.png

  1. 请求 mock 数据 配置好之后就可以使用了:
axios.get('/api/getData').then(res => { 
    console.log(res); 
}).catch(err => { 
    console.log(err); 
})

遇到的坑

曾经遇到过一个与 Mock 相关的问题,在使用调用某个接口时本地环境正常,但生产环境下报错,报错信息如下:

image.png

如果遇到这种情况,上线之前记得删掉注释掉 main.js 中 Mock 相关的引用即可。

image.png