Mock.js 是一个模拟数据生成器,利用它,可以拦截ajax请求,直接模拟返回数据,这样前后端只要约定好数据格式,前端就不需要依赖后端的接口,可以直接使用模拟的数据了。
  网上介绍mock的教程也较多,不过大多数看的比较模糊。其实使用起来非常简单,这里介绍在Vue工程中使用Mockjs,并且实现开发和生产配置化。

一、安装

cnpm install --save-dev mockjs

二、引入

  为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在env中做一个配置

//dev.env
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
MOCK: 'true',
}) //prod.env
module.exports = {
NODE_ENV: '"production"',
MOCK: 'false',
}

  然后再main.js里面引入mockjs

process.env.MOCK && require('@/mock')
//表示配置MOCK为true的时候,才引入mock,所以生产环境的时候就不引入mock了

三、目录和文件创建

  在src目录下创建mock目录,添加index.js文件,这里建议给每类api使用单独的mock文件。例如下面一个api文件对应一个mock文件

  mock/index.js

//将所有的mock文件导入
require('./inspection') // 在这里可以做一些通用的配置
const Mock = require("mockjs")
// 设置所有ajax请求的超时时间,模拟网络传输耗时
Mock.setup({
timeout: -
})

四、拦截ajax请求,配置mock的数据

const Mock = require("mockjs")
const Random = Mock.Random; Mock.mock('/api/load','get',{
'xData|100':['@datetime'],
'series|2':[{
'name':'@NAME',
'type':'line',
'smooth':true,
'data|100':['@integer(1,600)']
}]
})

  拦截ajax请求主要可以使用Mock中的两个方法:

Mock.mock( rurl, rtype, template )
Mock.mock( rurl, rtype, function( options ) )
  rurl:表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。(在vue 工程中,建议将api的url全部放在apipath中统一管理,然后在Mock中使用与发请求的时候使用的同一个引用)
  rtype:表示需要拦截的 Ajax 请求类型。例如 GET、POST、PUT、DELETE 等。
  template:表示数据模板,可以是对象或字符串。如果需要要把数据写死,可以直接写一个普通的对象。如果要让Mock随机生成,可以根据Mock模板的规则自定义。例如:

{ 'data|1-10':[{}] } 表示生成生成包含 1到10个空对象的数据
'@EMAIL' 表示随机生成一个email地址
'@CNAME' 表示随机生成一个中文人名
  再就是函数,比如下面这样

Mock.mock('/api/redo','get',function(options){
let series=[];
for(let n=;n<;n++){
let _obj={};
_obj.name = '05-' + (n <= ? '' + n : n);
_obj.type = 'line';
_obj.data=[];
for(let i=;i<;i++){
let _d = Random.integer(,) * (i% == ? : );
_obj.data.push(_d);
}
series.push(_obj);
}
return series;
})

  到此基本应用就可以了,更详细的使用,请看官方文档。

五、Mock 无法拦截 带参数的 GET 请求

  解决:后来将路径改成正则就好

//api
//获取健康模型数据
export const getRadarDataApi = (id) => ajax({url:BASEURL + 'radar/' + id}) //mock
Mock.mock(/\/api\/radar/,'get',{
'radar|5':['@integer(0, 100)']
})

vue项目中使用mockjs模拟接口返回数据的更多相关文章

  1. 如何在vue-cli项目中结合mockjs模拟假数据

    1.前言 在如今前后端分离的开发方式已被广泛采用的今天,前端同学和后端同学各自独立开发,后端提供数据接口,前端调用接口获取数据渲染页面.但是在实际开发中,后端开发由于逻辑相对复杂接口迟迟提供不到位,而 ...

  2. mock模拟接口返回数据

    mock,是python中模拟接口返回数据 1.安装 pip install mock import unittest from mock import Mock def add(a,b): pass ...

  3. 为什么在项目中data需要使用return返回数据呢?

    问:为什么在项目中data需要使用return返回数据呢? 答:不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件.

  4. vue项目中使用mockjs+axios模拟后台数据返回

    自己写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,于是在网上找了下,发现一个挺好用的模拟后台接口数据的工具:mockjs.现在把自己在项目中使用的方法贴出来   先看下项目的目 ...

  5. Vue项目中引入mockjs

    前提:创建好的vue项目 前言: 为什么引入mockjs:为了实现前后端分离,开发工作可以异步进行 其他工具:axios 一般的前后端交互过程:前端 --> ajax请求 --> 网络协议 ...

  6. vue项目中利用popstate处理页面返回操作

    需求背景:项目中需要做一个返回确认,避免用户误触返回键而退出当前页面. 原理:利用history和浏览器刷新popstate状态 实现: 1.在mounted() 阶段判断并添加popstate事件监 ...

  7. 10-Mock模拟接口返回数据

    1.安装mock 方法一:pip安装 命令行直接输入:pip install mock 方法二:官网下载mock安装包安装 下载安装包后,解压,命令行进入解压目录,执行python setup.py ...

  8. vue项目中多个组件之间传递数据

    //父组件<template> <div> <div style="float: left"> <input-data :city=&qu ...

  9. vue项目中阻止浏览器返回上一页

    vue项目中在某个页面阻止浏览器返回上一页,适用移动端.PC端. 使用场景例如: 首页 与 A页面     来回跳转,那样点击浏览器返回时也会来回跳转,本想当页面在首页的时候就不再返回了,所以这个时候 ...

随机推荐

  1. poj3414 Pots(BFS)

    题目链接 http://poj.org/problem?id=3414 题意 有两个杯子,容量分别为A升,B升,可以向杯子里倒满水,将杯子里的水倒空,将一个杯子里的水倒到另一个杯子里,求怎样倒才能使其 ...

  2. checkbox 更改样式

    html: <div class="wrap"> <p>1. 勾选</p> <input type="checkbox" ...

  3. 转:gcc编译C++程序

    转:http://blog.csdn.net/liujiayu2/article/details/49864381 单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个 ...

  4. java中Dao模式

    什么是DAO   1.Data Access Object(数据存取对象) 2.位于业务逻辑和持久化数据之间 3.实现对持久化数据的访问 DAO模式的作用 1隔离业务逻辑代码和数据访问代码 2.隔离不 ...

  5. MongoDB——环境搭建

    项目中需要将一些读多改少的数据存入到 MongoDB 数据库中来提高效率,于是简单学习一些MongoDB数据库的知识,来进行应对,也是对自己知识盲区进行补充.本文主要学习介绍MongoDB数据库在Li ...

  6. 「BZOJ 4502」串

    「BZOJ 4502」串 题目描述 兔子们在玩字符串的游戏.首先,它们拿出了一个字符串集合 \(S\),然后它们定义一个字符串为"好"的,当且仅当它可以被分成非空的两段,其中每一段 ...

  7. 【20181027T2】易水决【贪心+堆】

    原题:loj6035 [错解] 全肝T1了没怎么想 [正解] 一眼贪心 先考虑\(b_i=0\)怎么做 可以模拟一个正常人的思维 开一个堆,记录每个任务需要的时间(包括等待),每次从中取出一个任务,表 ...

  8. ssm整合总结(一)--第一步之使用maven搭建一个web项目

    本文内容来自:山硅谷,本文内容整合了任务2,任务3,任务4内容.http://www.gulixueyuan.com/my/course/50 1说明 1.1该项目使用的知识点有 1.1.1校验方式是 ...

  9. HDU 5646 DZY Loves Partition 数学 二分

    DZY Loves Partition 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5646 Description DZY loves parti ...

  10. 编程经验(C#)

    本文记录我在编程里学到的一些小技巧,遇到了就记录一下. 1.如果通用接口中的回调没有参数,而调用时需要参数,这个时候可以用匿名函数多封装一层.例如: Private void Main() { Fun ...