vue 利用mockJs 模拟数据
工作这几年一直用Java 开发,前端的技术自己也忘得差不多了(实际上自己也不怎么会),最近参与的项目是用VUE + Element-ui + springboot 写的,由于需求没有定,先画一个demo界面出来,又懒得写死数据,于是就上网查了查怎么写mock,昨天用了一两个小时摸清套路后成功实现,因为以前没接触过VUE ES5 ES6之类,所以有的地方写起来比较吃力。今天想起来了,就记录一下。
关于mockjs的官方文档 https://github.com/nuysoft/Mock/wiki
1. 安装 mockjs 和 mock
npm install mock -S npm install mockjs -S
2.在src 文件加下创建mock 文件夹, 创建mock.js,内容如下:
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { TimeLineData1, TimeLineData2, TimeLineData3, TimeLineData4} from './progressList';
import {getJobPrgsInfoByParameter} from '../api/api'; let _TimeLineData1 = TimeLineData1;
let _TimeLineData2 = TimeLineData2;
let _TimeLineData3 = TimeLineData3;
let _TimeLineData4 = TimeLineData4; export default {
/**
* mock bootstrap
*/
bootstrap() {
let mock = new MockAdapter(axios); mock.onGet('/api/jobmonitor/getJobPrgsInfoByParameter').reply(config => {
let req = config.params;
let reqId = req.params.reqId; console.log(req.params); if(reqId == 'active'){
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([200, {
timeLineList: _TimeLineData1
}]);
}, 1000);
});
}
else if(reqId == 'wait'){
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([200, {
timeLineList: _TimeLineData2
}]);
}, 1000);
});
}
else if(reqId == 'finish'){
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([200, {
timeLineList: _TimeLineData3
}]);
}, 1000);
});
}
else{
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([200, {
timeLineList: _TimeLineData4
}]);
}, 1000);
});
} }); }
};
3. 创建progressList.js, 编写mock 数据
const Mock = require("mockjs")
const Random = Mock.Random
const code = 200
const TimeLineData1 = [];
const TimeLineData2 = [];
const TimeLineData3 = [];
const TimeLineData4 = [];
for (let i = 0; i < Random.natural(5, 35); i++) {
let timeLine = {
timestamp: Random.date() + ' ' + Random.time(),
_expanded: true,
jobProgress :[]
}
for(let j=0; j< Random.natural(1, 9); j++){
let progress = {
requestId: Random.guid(),
jobName: Random.name() + ' test',
currentStepId: 'step' + Random.natural(0,10),
currentStepStatus: Random.pick(['success', 'error']),
percentage: Random.natural(0,99),
category: Random.pick(['cv_locate', 'cv_availability']),
type: Random.pick(['sftp','http','ems','email','fix'])
}
timeLine.jobProgress.push(progress)
}
TimeLineData1.push(timeLine)
}
for (let i = 0; i < Random.natural(5, 35); i++) {
let timeLine = {
timestamp: Random.date() + ' ' + Random.time(),
_expanded: true,
jobProgress :[]
}
for(let j=0; j< Random.natural(1, 9); j++){
let progress = {
requestId: Random.guid(),
jobName: Random.name() + ' test',
percentage: 0,
category: Random.pick(['cv_locate', 'cv_availability']),
type: Random.pick(['sftp','http','ems','email','fix'])
}
timeLine.jobProgress.push(progress)
}
TimeLineData2.push(timeLine)
}
for (let i = 0; i < Random.natural(5, 30); i++) {
let timeLine = {
timestamp: Random.date() + ' ' + Random.time(),
_expanded: true,
jobProgress :[]
}
for(let j=0; j< Random.natural(1, 9); j++){
let progress = {
requestId: Random.guid(),
jobName: Random.name() + ' test',
percentage: 100,
currentStepStatus: Random.pick(['success', 'error']),
category: Random.pick(['cv_locate', 'cv_availability']),
type: Random.pick(['sftp','http','ems','email','fix'])
}
timeLine.jobProgress.push(progress)
}
TimeLineData3.push(timeLine)
}
for (let i = 0; i < Random.natural(5, 30); i++) {
let timeLine = {
timestamp: Random.date() + ' ' + Random.time(),
_expanded: true,
jobProgress :[]
}
for(let j=0; j< Random.natural(1, 9); j++){
let progress = {
requestId: Random.guid(),
jobName: Random.name() + ' test',
currentStepId: 'step' + Random.natural(0,10),
currentStepStatus: Random.pick(['success', 'error']),
percentage: Random.natural(0,99),
type: Random.pick(['sftp','http','ems','email','fix'])
}
timeLine.jobProgress.push(progress)
}
TimeLineData4.push(timeLine)
}
Mock.setup({
timeout: 0-3000
})
export { TimeLineData1,TimeLineData2,TimeLineData3,TimeLineData4 };
3. 通过api.js对api请求统一的管理,路经在src/api
import axios from 'axios'; axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.timeout = 60000
let base = ''; export const getJobPrgsInfoByParameter = params => { return axios.get('/api/jobmonitor/getJobPrgsInfoByParameter',{ params: params }).then(res => res.data); };
4. 页面调用
<script>
import Mock from '@/mock/mock.js';
import util from '../../common/js/util';
import moment from 'moment';
import {getJobPrgsInfoByParameter} from '../../api/api'; .....
export default {
components: {
},
data() {
return {
listLoading : false,
reqType :null,
timeLineList:[]
}
},
methods: {
getJobPrgsInfoByParameter: function () {
let para = {
params:{
reqId:this.reqType
}
};
this.listLoading = true;
Mock.bootstrap();
this.timeLineList = [];
getJobPrgsInfoByParameter(para).then(res=>{
this.timeLineList = res.timeLineList;
});
this.listLoading = false;
}
}
}
数据如下:

vue 利用mockJs 模拟数据的更多相关文章
- 如何在Vue中使用Mockjs模拟数据的增删查改
之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...
- vue+mockjs 模拟数据,实现前后端分离开发
在项目中尝试了mockjs,mock数据,实现前后端分离开发. 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰 ...
- vue+iview+mock模拟数据遍历
下载安装iview, 进入根目录,用命令行启动 npm install npm run build npm run dev 安装mock.js和axios npm install mock.js -s ...
- mockjs模拟数据请求
一般项目的方法 <html> <head> <script> <script src="http://requirejs.org/docs/rele ...
- vue 使用mock来模拟数据
首先,需要安装mock npm install mockjs --save-dev 在main.js中引入mock mock文件写法如下: const Mock = require('mockjs') ...
- 如何在vue-cli项目中结合mockjs模拟假数据
1.前言 在如今前后端分离的开发方式已被广泛采用的今天,前端同学和后端同学各自独立开发,后端提供数据接口,前端调用接口获取数据渲染页面.但是在实际开发中,后端开发由于逻辑相对复杂接口迟迟提供不到位,而 ...
- vue-cli实现异步请求返回mock模拟数据
在前后端分离开发的过程中,前端开发过程中,页面的数据显示一般都是写死的静态数据,也就是没有经过接口,直接写死在代码中的,在后端给出接口后,再替换为接口数据,为了减少对接成本,mock就出现了.通过预先 ...
- vue项目中使用mockjs模拟接口返回数据
Mock.js 是一个模拟数据生成器,利用它,可以拦截ajax请求,直接模拟返回数据,这样前后端只要约定好数据格式,前端就不需要依赖后端的接口,可以直接使用模拟的数据了. 网上介绍mock的教程也较多 ...
- vue+vuecli+webpack中使用mockjs模拟后端数据
前言 使用mockjs可以事先模拟数据,前提是和后端约定好了数据接口,怎样的数据.使用mock就可以生成你要的数据了,从而实现开发时前后端分离. 其主要功能是: 基于数据模板生成模拟数据. 基于HTM ...
随机推荐
- 深入分析Java I/O 工作机制
前言 : I/O 问题是Web 应用中所面临的主要问题之一.而且是任何编程语言都无法回避的问题,是整个人机交互的核心. java 的I/O类操作在java.io 包下,将近80个子类, 大概可以分成 ...
- 搭建环境-Monkeyrunner-自动化测试工具
这篇博客帮助挺大,我补充部分,帮助同样的小白哈哈,侵删 https://www.cnblogs.com/lynn-li/p/5885001.html 1.前期准备 需要安装:JDK,SDK,pytho ...
- vi/vim 添加或删除多行注释
进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK) 移动光标上移或者下移,选中多行的开头,如下图所示 选择完毕后,按大写的的I键,此时下方会提示进入“inser ...
- 还原堆栈信息,分析地形系统使用ASTC格式的纹理导致Crash的问题
0x00 前言 在这篇文章中,我们选择了过去一周Unity官方社区交流群中比较有代表性的几个问题,总结在这里和大家进行分享.主要涵盖了IL2CPP.Scripting.Virtual Reality. ...
- F#正则表达式
此词法分析器允许您使用F#计算表达式以非常声明的方式定义基于正则表达式的规则. F# 打开 Lexer 让 定义= lexerDefinitions { 做!addNextlineDefinition ...
- Java数据结构和算法 - 高级排序
希尔排序 Q: 什么是希尔排序? A: 希尔排序因计算机科学家Donald L.Shell而得名,他在1959年发现了希尔排序算法. A: 希尔排序基于插入排序,但是增加了一个新的特性,大大地提高了插 ...
- 图解TCP三次握手
参考:https://blog.csdn.net/u012804886/article/details/80998114
- Android Studio开发环境配置以及相关说明
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下在开发的时候使用的Android Studio开发环境版本以及相关注意事项. 一般来讲,每隔一段时间就要检查下Andr ...
- springboot~mockMvc和asciidoctor生成基于TDD的API文档
API文档是前端与后端快速开发,减少沟通成本的必要条件,有一份完善的文档是很必要的,由通过测试来生成文档的好处就是:测试数据有了,测试返回结果有了,而且可以对这些字段进行说明,很清晰,在springb ...
- SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...