一、为什么使用mockjs

在做开发时,当后端的接口还未完成,前端为了不影响工作效率,手动模拟后端接口,

1.我们可以使用json文件来模拟后台数据,但比较局限,无法模拟数据的增删改查
2.使用json-server模拟,但不能随机生成所需数据
3.使用mockjs模拟后端接口,可随机生成所需数据,可模拟对数据的增删改查

二、mock优点

1.前后端分离,
2.可随机生成大量的数据
3.用法简单
4.数据类型丰富
5.可扩展数据类型
6.在已有接口文档的情况下,我们可以直接按照接口文档来开发,将相应的字段写好,在接口完成 之后,只需要改变url地址即可。

三、安装

1.使用npm安装:npm install mockjs --save-dev2.或者直接<script src="http://mockjs.com/dist/mock.js"</script>

四、mock使用

基本语法:

Mock.mock('地址',{ "dataname|rule":{"值"} })
  • dataname——名称:模拟的数据的名字。
  • 值:模拟的数据的值。
  • rule——规则:模拟出数据的规则,常用的几个规则:
    • min-max:生成的范围
    • count:生成的数量
    • +step:递增step

说明:地址就是我们通过ajax获取数据时候填写的地址,这里填写的地址可以是任意不存在的地址,第二个参数是我们要模拟的数据,以及相应的规则。

语法规则

参照官网实例即可:Mock官网示例

也可参考 Mock生成随机数据常用的类型规则

示例:

Mock.mock('https://www.test.com',{"userInfo|4":[{    //生成|num个如下格式名字的数据"id|+1":1,  //数字从当前数开始后续依次加一"name":"@cname",    //名字为随机中文名字"ago|18-28":25,    //年龄为18-28之间的随机数字"sex|1":["男","女"],    //性别是数组中的一个,随机的"job|1":["web","UI","python","php"]    //工作是数组中的一个}]})
最后通过ajax接收数据,形式如下://ajax接收数据,通过jq$.get('https://www.test.com',function(data){console.log(JSON.parse(data));})

最终生成的数据为:


五、mock封装

为了可以统一管理和集中控制数据模拟接口,我们对mock模块进行了封装,可以方便地定制模拟接口的统一开关和个体开关。

统一导入所有子模块并通过调用mock进行数据模拟。

在src文件夹下新建mock文件夹,并新建index.js添加以下代码:

import Mock from 'mockjs'
import { baseUrl } from '@/utils/global'
import * as login from './modules/login'
import * as user from './modules/user'  //这就是/mock/modules/user.js、以下同理
import * as role from './modules/role'
import * as dept from './modules/dept'
import * as menu from './modules/menu'
import * as dict from './modules/dict'
import * as config from './modules/config'
import * as log from './modules/log'
import * as loginlog from './modules/loginlog'// 1. 开启/关闭[所有模块]拦截, 通过调[openMock参数]设置.
// 2. 开启/关闭[业务模块]拦截, 通过调用fnCreate方法[isOpen参数]设置.
// 3. 开启/关闭[业务模块中某个请求]拦截, 通过函数返回对象中的[isOpen属性]设置.
// let isOpen = true
let isOpen = true
fnCreate(user, isOpen)
fnCreate(role, isOpen)
fnCreate(dept, isOpen)
fnCreate(menu, isOpen)
fnCreate(dict, isOpen)
fnCreate(config, isOpen)
fnCreate(log, isOpen)
fnCreate(loginlog, isOpen)
fnCreate(login, isOpen)/*** 创建mock模拟数据* @param {*} mod 模块* @param {*} isOpen 是否开启?*/
function fnCreate (mod, isOpen = true) {if (isOpen) {for (var key in mod) {((res) => {if (res.isOpen !== true) {Mock.mock(new RegExp(res.url), res.type, (opts) => {opts['data'] = opts.body ? JSON.parse(opts.body) : nulldelete opts.bodyconsole.log('\n')console.log('%cmock拦截, 请求: ', 'color:blue', opts)console.log('%cmock拦截, 响应: ', 'color:blue', res.data)return res.data})}})(mod[key]() || {})}}
}

模块 user 示例

src下的/mock/modules/user.js

// 引入 Mock
import Mock from 'mockjs'// 生成数据列表
var dataList = []
for (let i = 0; i < Math.floor(Math.random() * 10 + 20); i++) {dataList.push(Mock.mock({'userId': '@id','userName': '@name','userType': '普通用户','phone': /^1[0-9]{10}$/,'status': 1,'roleIdList': null,'createUserId': 1,'createTime': '@date(yyyy-MM-dd)','validTime': '@date(yyyy-MM-dd)'}))
}// 获取用户列表
export function list () {return {// isOpen: false,url: '/user/list',type: 'get',data: {'msg': 'success','code': 0,'totalNum': dataList.length,'userInfoList': dataList}}
}// 添加
export function save() {return {// isOpen: false,url: '/user/new',type: 'post',data: {'msg': 'success','code': 0}}
}
// 删除
export function batchDelete() {return {// isOpen: false,url: '/user/delete',type: 'post',data: {'msg': 'success','code': 0}}
}

注:需要在router的index.js中引入mock的配置文件

import '@/mock/index.js'

mockjs的介绍、基本使用和封装相关推荐

  1. Android 网络框架 Retrofit2.0介绍、使用和封装

    前言 时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟.网络框架中的佼佼者Volley也不再那么光鲜,取而 ...

  2. Java Hutool 介绍 hutool 工具包 模块 封装 工具

    1.简介 Hutool文档 (很重要) Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以&q ...

  3. varnish介绍以及虚拟机的封装

    varnish是一款高性能.开源的反向代理服务器和缓存服务器.Varnish使用内存缓存文件来减少响应时间和网络带宽消耗. VCL处理流程图 处理过程大致分为如下几个步骤: (1)Receive 状态 ...

  4. Linux网络编程 | Socket编程(一):Socket的介绍、UDPSocket的封装、UDP服务器/客户端的实现

    目录 套接字编程 Sockaddr结构 字节序 地址转换 常用套接字接口 UDP的通信流程 UDPSocket的封装 UDP服务器 UDP客户端 套接字编程 所谓套接字(Socket),就是对网络中不 ...

  5. tl494c封装区别_TL494参数,功能介绍,TL494应用电路图,封装,管脚及TL494 PDF中文资料手册...

    TL494中文资料 功能介紹 中文 : 功能介紹 英文 : Voltage mode PWM control circuit. 品牌 : Contek 封装 : 引脚 : 功能介紹 中文 : 功能介紹 ...

  6. mockjs详细介绍

    一,什么是mockjs? 官网: https://github.com/nuysoft/Mock/wiki/Getting-Started 二,为什么要使用mockjs 在做开发时,当后端的接口还未完 ...

  7. C++ ICU库介绍以及常用代码封装

    文章目录 前言 一.安装 二.编码转换 1.gbk 转 utf-8 2.utf-8 转 gbk 3.gbk 转 utf-16(宽字符) 4.utf16 转 gbk 5.utf-8 转 utf16 6. ...

  8. 23种设计模式的基本介绍

    创建型模式(Creational Pattern) 1. 抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2 ...

  9. Android媒体播放框架MediaSessionCompat介绍实践

    前言 最近维护项目的时候遇到了MediaSessionCompat框架的音乐播放器,简单搜索记录一下这套实现播放器的结构吧. MediaSession框架简介 我们先来看看如何设计一款音乐播放App的 ...

最新文章

  1. .NET Winform也能画出类似QQ、飞信这样的窗口风格和控件效果
  2. R中控制输出数值的小数点位数round,和有效数字位数signif
  3. 自然语言处理「迷惑行为大赏」,自然语言处理太难难难了!
  4. 010_JMS消息选择器
  5. python——全局变量和局部变量
  6. Java代码书写规范
  7. s3c2440内存控制器与SDRAM基本测试
  8. 【FPGA Verilog】实验二:key按键基础实验
  9. python no such file or directory_Python3 no such file or directory
  10. 优雅地修改多模块maven项目中的版本号
  11. maven pom.xml中设置java编译参数
  12. 虚拟路由器的到来是否敲响了传统路由器的丧钟
  13. ZUCC计算机网络 网络安全
  14. Webservice接口之CXF框架及Axis框架
  15. jmeter的HTTP请求
  16. 复杂网络笔记-R语言
  17. react中动态渲染背景图片
  18. 【极富参考价值!】第1章 ClickHouse 简介《ClickHouse 企业级大数据分析引擎实战》...
  19. 用一年的数据预测下一年数据_一年的招聘数据中的经验教训
  20. 【信息安全】屁股决定脑袋的COSO内控框架,一篇对COSO的趣评 [转贴]

热门文章

  1. notion知识库网站
  2. 软件巨头Salesforce带来AutoML杀手TransmogrifAI
  3. mysql自动化巡检_mysql自动化巡检脚本生成html报告
  4. 神经网络用作分类器(附代码matlab)
  5. 【Nokov】动作捕捉系统标定与机械臂各坐标系的说明
  6. NMS 原理和c++实现,已测试通过
  7. python图书馆抢座_python模拟表单提交登录图书馆
  8. Spring Boot 2.0 Intellij Idea 中图文详解打包成可执行Jar
  9. 添加鼠标右键菜单项(EditPlus为例)
  10. 运行VS2012出现“未找到与约束....”的解决方法