不是吧不是吧难道单押也算呀

VUE CLI项目中使用MOCK实例

mock的使用场景是什么?

当前端工程师需要独立于后端并行开发时,前后端会约定一份接口文档,但前后端开发进度并不一致,当后端没有完善接口功能时,前端需要在本地模拟数据返回

这时可以考虑前端搭建web server自己模拟数据,这里我们选第三方库mockjs用来生成随机数据,拦截请求.

mock.js官网示例:http://mockjs.com/examples.html

mockjs使用搭建:

一:安装依赖

# yarn安装

yarn add mockjs --save-dev

# npm安装

npm install mockjs --save-dev

二:在vue项目中配置创建mock文件夹用于存放相关配置

1.在mock文件夹中添加一个index.js,这里就是我们注册所有mock服务的地方

/***index.js***/

// 首先引入Mock
const Mock = require('mockjs');

// 设置拦截ajax请求的相应时间
Mock.setup({
  timeout: '200-600'
});

let configArray = [];

// 使用webpack的require.context()遍历所有mock文件
const files = require.context('.', true, /\.js$/);
files.keys().forEach((key) => {
  if (key === './index.js') return;
  configArray = configArray.concat(files(key).default);
});

// 注册所有的mock服务
configArray.forEach((item) => {
  for (let [path, target] of Object.entries(item)) {
    let protocol = path.split('|');
    Mock.mock(new RegExp('^' + protocol[1]), protocol[0], target);
  }
});

:在vue项目中的配置

1.在vue.config.js中devServer的before属性中进行请求拦截配置

module.exporte={
	devServer:{
	   before:require('./mock/index.js')
	}
}

四:在main.js中引入

// main.js
require('./mock');

五:根据项目的业务逻辑在mock文件夹中添加请求所返回数据相对应的js文件

// user.js
let userList = {
	total: 100,
	'rows|10': [{
	    id: '@guid',
	    name: '@cname',
	    'age|20-30': 23,
	    'job|1': ['前端工程师', '后端工程师', 'UI工程师', '需求工程师']
	]}
}

export default {
    'get|/parameter/query':  option => {
	// option 指向本次请求的 Ajax 选项集,含有 url、type 和 body 三个属性
	return {
	    status: 200,
	    message: 'success',
	    data: userList
	};
  }
}

这样我们就可以每次随机生成10条数据,总数为100条,其中id和name使用的占位符,age是随机取出20-30中的数字,job是随机取出其后数组中的某一项,这在mock文档里都有说明。

当我们在页面发起了ajax请求,路径是'/parameter/query',并且请求方式是get时,就会返回我们写好的mock数据。

posted @ 2021-08-16 15:17  Slowfever  阅读(645)  评论(0编辑  收藏  举报