mockjs学习

1.前言

最近面试发现之前团队协同合作的项目没有mock数据难以向面试官直接展示,所以迟到得来速学一下mockjs。

参考视频:mockJs 妈妈再也不用担心我没有后端接口啦_哔哩哔哩_bilibili

一开始查阅了一些资料,先是看了下EasyMock,有点没搞懂是怎么用的

轻松模拟 (presstime.cn)

所以最后对比之下还是决定使用mockjs。

首先介绍一下mock数据的好处,除了前端可以在不依赖后端的情况下展示整个项目运行流程之外,还有很多其他好处。

官方给出的作用:

直观来说就是

1.前后端并行开发

2.前端独立运行


Mockjs官方文档:Mock.js (mockjs.com)

2.安装配置

javascript 复制代码
npm i mockjs

3.mock数据初体验

创建一个test.js文件

javascript 复制代码
const { mock } = require("mockjs");

let data = mock({
  "data": "@cname()",
  "age": "@integer(1,100)",
  "addr": "@city(true)",
  "email": "@email(qq.com)",
})

console.log(data)

打开终端,运行node .\test.js命令


4.数据模板定义规范

每个属性组成部分:属性名 生成规则 属性值

javascript 复制代码
"属性名|生成规则":属性值

1️⃣七种生成规则

  1. 'name|min-max': value
  2. 'name|count': value
  3. 'name|min-max.dmin-dmax': value
  4. 'name|min-max.dcount': value
  5. 'name|count.dmin-dmax': value
  6. 'name|count.dcount': value
  7. 'name|+step': value
  • 属性名 和 生成规则 之间用竖线 | 分隔。

  • 生成规则 是可选的。

  • 生成规则 的 含义 需要依赖 属性值的类型 才能确定。

  • 属性值 中可以含有 @占位符

  • 属性值 还指定了最终值的初始值和类型。

具体示例可以看官方文档。Mock.js (mockjs.com)

2️⃣数据占位符

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。

javascript 复制代码
@占位符
@占位符(参数 [, 参数])

占位符 引用的是 Mock.Random 中的方法,可以直接导进去。

ctrl+点击random可以查看具体实现方法


5. 拦截axios请求

拦截axios请求之后,实际响应的数据是mock里面的数据,mock拦截请求的原理加单理解就是把原生的XHR重写了,变成自己的。

所以在开启mock之后,被拦截的请求是没有真实发送出去的,在网络请求中是看不到的。

几种拦截写法

1️⃣完整匹配

2️⃣methos

3️⃣正则

4️⃣函数模式

5️⃣代理增删查改


6.在实际项目中使用

基本目录结构

mock相关文件

可以按照接口模块,分开定义对应的mock数据文件

注意填入正确的拦截路径。

main文件全局配置

只需要在main.js中引入mock文件夹的index文件就可以了

只需要注释掉main.js中对mockjs文件的导入,就可以使用真正的后端接口,开启就是使用mock地址。

还可以再灵活一点,把mock/index的入口变成函数,开启mock就调用做个函数,不开启就不调用。

成功拦截axios并返回mock数据!

相关推荐
每天题库c3 小时前
水利水电安全员C证考试题库资料,2024年全国考试通用!
学习·考证·水利水电安全员
舞者H5 小时前
源码层面学习动态代理
java·学习
海盗猫鸥5 小时前
C++入门基础篇(1)
开发语言·c++·学习
阳光九叶草LXGZXJ5 小时前
南大通用数据库-Gbase-8a-学习-44-DDLEVENT恢复
linux·数据库·sql·学习
极乐码农5 小时前
Spring学习03-[Spring容器核心技术IOC学习进阶]
java·学习·spring
逆水寻舟6 小时前
算法学习记录2
python·学习·算法
honey ball6 小时前
逆变器学习笔记(二)
笔记·学习·开源
摸鱼仙人~6 小时前
计算机组成原理学习笔记(一)
笔记·学习
鸽鸽程序猿7 小时前
【数据结构】顺序表
java·开发语言·数据结构·学习·算法·intellij idea
rain_love_snow7 小时前
后端学习(一)
学习