mockjs的介绍、基本使用和封装
一、为什么使用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的介绍、基本使用和封装相关推荐
- Android 网络框架 Retrofit2.0介绍、使用和封装
前言 时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟.网络框架中的佼佼者Volley也不再那么光鲜,取而 ...
- Java Hutool 介绍 hutool 工具包 模块 封装 工具
1.简介 Hutool文档 (很重要) Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以&q ...
- varnish介绍以及虚拟机的封装
varnish是一款高性能.开源的反向代理服务器和缓存服务器.Varnish使用内存缓存文件来减少响应时间和网络带宽消耗. VCL处理流程图 处理过程大致分为如下几个步骤: (1)Receive 状态 ...
- Linux网络编程 | Socket编程(一):Socket的介绍、UDPSocket的封装、UDP服务器/客户端的实现
目录 套接字编程 Sockaddr结构 字节序 地址转换 常用套接字接口 UDP的通信流程 UDPSocket的封装 UDP服务器 UDP客户端 套接字编程 所谓套接字(Socket),就是对网络中不 ...
- tl494c封装区别_TL494参数,功能介绍,TL494应用电路图,封装,管脚及TL494 PDF中文资料手册...
TL494中文资料 功能介紹 中文 : 功能介紹 英文 : Voltage mode PWM control circuit. 品牌 : Contek 封装 : 引脚 : 功能介紹 中文 : 功能介紹 ...
- mockjs详细介绍
一,什么是mockjs? 官网: https://github.com/nuysoft/Mock/wiki/Getting-Started 二,为什么要使用mockjs 在做开发时,当后端的接口还未完 ...
- C++ ICU库介绍以及常用代码封装
文章目录 前言 一.安装 二.编码转换 1.gbk 转 utf-8 2.utf-8 转 gbk 3.gbk 转 utf-16(宽字符) 4.utf16 转 gbk 5.utf-8 转 utf16 6. ...
- 23种设计模式的基本介绍
创建型模式(Creational Pattern) 1. 抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2 ...
- Android媒体播放框架MediaSessionCompat介绍实践
前言 最近维护项目的时候遇到了MediaSessionCompat框架的音乐播放器,简单搜索记录一下这套实现播放器的结构吧. MediaSession框架简介 我们先来看看如何设计一款音乐播放App的 ...
最新文章
- .NET Winform也能画出类似QQ、飞信这样的窗口风格和控件效果
- R中控制输出数值的小数点位数round,和有效数字位数signif
- 自然语言处理「迷惑行为大赏」,自然语言处理太难难难了!
- 010_JMS消息选择器
- python——全局变量和局部变量
- Java代码书写规范
- s3c2440内存控制器与SDRAM基本测试
- 【FPGA Verilog】实验二:key按键基础实验
- python no such file or directory_Python3 no such file or directory
- 优雅地修改多模块maven项目中的版本号
- maven pom.xml中设置java编译参数
- 虚拟路由器的到来是否敲响了传统路由器的丧钟
- ZUCC计算机网络 网络安全
- Webservice接口之CXF框架及Axis框架
- jmeter的HTTP请求
- 复杂网络笔记-R语言
- react中动态渲染背景图片
- 【极富参考价值!】第1章 ClickHouse 简介《ClickHouse 企业级大数据分析引擎实战》...
- 用一年的数据预测下一年数据_一年的招聘数据中的经验教训
- 【信息安全】屁股决定脑袋的COSO内控框架,一篇对COSO的趣评 [转贴]
热门文章
- notion知识库网站
- 软件巨头Salesforce带来AutoML杀手TransmogrifAI
- mysql自动化巡检_mysql自动化巡检脚本生成html报告
- 神经网络用作分类器(附代码matlab)
- 【Nokov】动作捕捉系统标定与机械臂各坐标系的说明
- NMS 原理和c++实现,已测试通过
- python图书馆抢座_python模拟表单提交登录图书馆
- Spring Boot 2.0 Intellij Idea 中图文详解打包成可执行Jar
- 添加鼠标右键菜单项(EditPlus为例)
- 运行VS2012出现“未找到与约束....”的解决方法