官方文档:Mock.js
一.引言
在前端开发过程中,我们经常会遇到后端接口尚未完成,但前端需要进行页面构建和功能测试的情况。这时候,Mockjs就如同救星一般出现了。Mockjs 是一款能够模拟生成随机数据,拦截 Ajax 请求并返回模拟数据的工具,它极大地提高了前端开发的效率,让前端开发可以独立于后端进行。
二.安装Mockjs
npm install mockjs --save - dev
三.模拟数据
src/mock/modules/common.js
import Mock from "mockjs";// 生成数据列表
var dataList = [];
for (let i = 0; i < Math.floor(Math.random() * 10 + 1); i++) {dataList.push(Mock.mock({id: "@increment",paramKey: "@first",paramValue: "@last",remark: "@csentence",}));
}// 获取参数列表
export function list() {return {// isOpen: false,url: "/user/list",type: "get",data: {msg: "success",code: 200,page: {totalCount: dataList.length,pageSize: 10,totalPage: 1,currPage: 1,list: dataList,},},};
}
四.批量注册
src/mock/index.js
import Mock from "mockjs";
import * as common from "./modules/common";// tips
// 1. 开启/关闭[业务模块]拦截, 通过调用fnCreate方法[isOpen参数]设置.
// 2. 开启/关闭[业务模块中某个请求]拦截, 通过函数返回对象中的[isOpen属性]设置.
fnCreate(common, true);/*** 创建mock模拟数据* @param {*} mod 模块* @param {*} isOpen 是否开启?*/
export function fnCreate(mod, isOpen = true) {// isOpen = false;if (isOpen) {for (var key in mod) {((res) => {if (res.isOpen !== false) {Mock.mock(new RegExp(res.url), res.type, (opts) => {// console.log("opts---", opts);return res.data;});}})(mod[key]() || {});}}
}
五.全局引入
main.ts入口文件
// 非生产环境, 适配mockjs模拟数据
if (process.env.NODE_ENV !== "production") {const MockJs = () => import("/@/mock/index.js");MockJs();
}
六.页面调用
<template><ul><li v-for="(item, i) in users" :key="i"><h3>id:{{ item.id }}</h3><p>paramKey:{{ item.paramKey }}</p><p>paramValue:{{ item.paramValue }}</p><p>remark:{{ item.remark }}</p><hr /></li></ul>
</template><script>
import axios from 'axios'export default {data() {return {users: []}},mounted() {axios.get('/user/list').then(res => {console.log("res--", res);this.users = res.data.page.list}).catch(error => {console.log(error)})}
}
</script>
效果图