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 ...
随机推荐
- missing requires of libmysqlclient.so.18()(64bit)
错误提示安装依赖的库文件没有找到: libmysqlclient.so.18()(64bit) 解决方法是这样的: 安装mysql-community-libs-compat-5.7.18-1 ...
- 为 VUE 项目添加 PWA 解决发布后刷新报错问题
为什么要给 VUE 项目添加 PWA 为什么要添加?因为不管是部署在 IIS,还是 nginx,每次应用部署后,再次访问因为旧的 js 已经不存在,所以页面访问的时候会整个报错,报错的结果就是一个白屏 ...
- scrapy爬虫 快速入门
Scrapy 1. 简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络 ...
- PHP中$GLOBALS和global的区别
很多人都认为$GLOBALS['var']和global $var只是写法上不同,其实并不是这样 根据官方的解释是 $GLOBALS['var']是外部全局变量$var的本身, 而global $v ...
- 学python走过的坑 三 不能实现的浏览器缩放功能
公司一个项目,在启动web页面时,默认应该是打开项目页面,然后浏览器启动时总是打开一个广告页面,经理让写一个脚本,让电脑每次开机自启浏览器,且加载项目页面.浏览器自启和打开项目页面轻松搞定,这时问题来 ...
- [Abp vNext 源码分析] - 文章目录
一.简要介绍 ABP vNext 是 ABP 框架作者所发起的新项目,截止目前 (2019 年 2 月 18 日) 已经拥有 1400 多个 Star,最新版本号为 v 0.16.0 ,但还属于预览版 ...
- python将字符串类型list转换成list
python读取了一个list是字符串形式的'[11.23,23.34]',想转换成list类型: 方式一: import ast str_list = "[11.23,23.34]&quo ...
- 2.Flask jinjia2模板
1.1.模板传参 (1)主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def he ...
- ES 07 - Elasticsearch查询文档的六种方法
目录 1 Query String Search(查询串检索) 2 Query DSL(ES特定语法检索) 3 Query Filter(过滤检索) 4 Full Text Search(全文检索) ...
- @vue-cli3创建项目报错:ERROR command failed: npm install --loglevel error --registry=https://registry.npm.taobao.org --di
使用@vue-cli3时 在你感觉所以配置都搞好开始创建项目时,不停的报错,就是创建不成功 清npm缓存也不行 改淘宝镜像也不行 就快奔溃了,最后最终(其实我在凑150字,为了能发到首页给更多采坑的兄 ...