基于androidx的快速开发框架_Vue企业级优雅实战07框架开发03封装基于MockJS的模拟数据...

预览本文的实现效果:

# gitee
git clone git@gitee.com:cloudyly/dscloudy-admin-single.git
# github
git clone git@github.com:cloudyly/dscloudy-admin-single.git

git checkout 05_MockJS

本文主要内容:基于 Mock JS,优雅设计网络请求的模拟数据。

Git 本地仓库切换新分支:

git checkout -b 05_MockJS

确认分支:

git branch

上文已经封装了基于 axios 的网络请求,假设接口还没有开发完毕,前端就无法正常的获取数据。为了提高开发效率,前后端在制定好 API 接口文档后能够并行开发,此时前端就需要使用模拟数据了。Mock JS 为模拟数据提供了很好的支持。

1 安装依赖

安装 Mock JS 依赖:

npm install --save mockjs

2 登录模拟数据

上一篇文章已经开发了登录接口,现在为登录接口创建模拟数据。按照系统设计,该接口成功时值返回一个 token 字符串。

2.1 创建 mock 文件

src/modules/core/mock/ 该目录是用于存放 mock 请求数据的,随着模块的庞大,每个模块也可能包括很多功能,故可以在该目录下按照功能模块创建子目录,然后统一导入到 index.js 中。由于 core module 中只有两三个请求,因此我直接在该目录下创建模拟数据文件 index.js

src/modules/core/mock/index.js:

import Mock from 'mockjs'
import urls from '@/config/urls'

// 登录请求
Mock.mock(urls.core.login, 'post', '149e5916-fada-42cd-9298-5d85b7dff2bb')

2.2 在 src/mock 中导入

src/mock 用于管理整个应用的 mock 数据,在该目录下创建 index.js,里面导入上面 core module 的 mock 文件即可。

src/mock/index.js:

import '@/modules/core/mock'

2.3 main.js 中引入

最后还需要在 main.js 中,根据全局配置,决定是否使用mock 数据。在 mock.js 中添加如下代码:

...
import config from '@/config'
...
if (config.isMock) {
  require('@/mock')
}
...

2.4 测试

src/config/index.js 中 isMock 属性为 true 时,点击登录按钮,控制台会打印出 mock 请求中的第三个参数 149e5916-fada-42cd-9298-5d85b7dff2bb; isMock 属性为 false 时,不会返回模拟数据,而是像上一篇文章一样返回 Network Error。

3 Mock JS 的技巧

登录请求比较简单,还没有完全体现 Mock JS 的其他一些技巧。此处先简单提一下,后面的实战中会都会遇到:

3.1 路径匹配问题

Mock.mock() 函数的第一个参数就是请求路径。按照上面的写法,是完全匹配。但 RESTful 风格的路径会出现:/users/x 这种形式,而 x是不确定的,这时候就需要路径的模糊匹配了,支持正则匹配。此时第一个参数可以写为:

RegExp(urls.core.demo + '.*')

即:

Mock.mock(RegExp(urls.core.demo + '.*'), 'get', '149e5916-fada-42cd-9298-5d85b7dff2bb')

3.2 返回复杂 JSON

Mock.mock() 第三个参数就是 mock 数据,如果模拟的数据是一个很长的 JSON 或其他的,直接写在这里会非常不优雅。我优雅的做法是在当前文件所在目录创建一个子目录 json, 把模拟的 json 数据放在 json目录下的 json 文件中,如 demo.json:

{
  "id": "12345",
  "username": "zhangsan"
}

此时第三个参数可以写为:

() => {
  return require('./json/demo')
}

即:

Mock.mock(RegExp(urls.core.demo + '.*'), 'get', () => {
  return require('./json/demo')
})

3.3 随机字符

有时候我们希望 mock 数据能返回一些随机字符串、数字之类的,Mock JS 提供了这方面的支持。如 { 'data|1-3': 'abcd' }{ 'name': '@cname' } 等函数。具体可以看看 Mock JS 的官网。在后面的实战过程中都会遇到的。

提交代码:

git add .
git cz
[框架开发] Mock数据

合并到 master 分支:

git checkout master
git merge 05_MockJS

将本地分支分别全部推送到 Gitee 和 GitHub

git push --all gitee_origin
git push --all github_origin

59f40d1a-3516-eb11-8da9-e4434bdf6706.jpeg
程序员搞艺术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Net Framework,Net Core 和 Net Standard 区别

前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究。下面我将说一下我自己对着三个的认识如果有不足的地方,请大家指出。 …

记录一次SQL优化,增加索引,随便写的当笔记了

写了一个SQL,前端往返时间大约1.7秒,最终优化到一共150毫秒左右,应该还可以更好一些 下面说的有点乱,有空再好好总结一下吧。参考文章里面写的还是比较好的,只不过没有组合查询。 参考链接:https://zhuan…

使用函数求最大公约数 pta_高中数学选修教材2-导数第6课时《函数的单调性与导数》教学设计...

选修2-2第一章1.3.1 函数的单调性与导数一、先复习一下,上节课讲到了利用导数求曲线的切线方程(点我),咱们这节课接着讲利用导数判断函数的单调性。二、做出图像形象生动,让学生看到当斜率为正(亦是导数为正)的时候函数图像是上升的&#xff…

java程序员_Java程序员工资为什么这么高?

众多行业中,程序员当然属于高薪职业。无论是国内还是国外,IT行业的程序员、工程师,甚至连码农都要比其他行业的从业者的收入高很多!尤其是作为IT界的“常青树”Java,原因是什么?01Java行业市场需求存在巨大…

【转】深入浅出OOP(六): 理解C#的Enums

MSDN定义:枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。 例如,假设您必须定义一个变量,该变量的值表示一周中的一天。 该变量只能存储七个有意义的值。 若要定义这些值&#xff…

usb接口供电不足_AMD RX 6000 系列显卡配备USB-C 接口,支持外接供电

IT之家 10 月 29 日消息 根据 AMD 的官方信息,新发布的 RX 6000 系列显卡进一步增强了显示能力,配备了 HDMI 2.1 接口、DP 1.4 接口和 USB-C 接口。AMD 表示,AMD Radeon 6000 系列显卡全部搭载 HDMI 2.1 VRR 接口,超大带宽支持最高…

【转】VS2005键盘布局_快捷键大全(总结了一些记忆的口诀)

VS快捷键对提高生产力有莫大帮助,本文将所有快捷键进行了重新整理归类,便于记忆。有缺失,不足之处,还请大家指出,谢谢 1、窗口快捷键 (W代表Windows也就是窗口的意思) CtrlW,A: 命令窗口&#…

mac securecrt程序无响应_如何重置mac上的系统管理控制器smc教程

虽然mac是一款十分高端的个人笔记本电脑,但是mac也会有出现故障的时候,比如风扇高速转动、键盘背光灯行为有些异常异常等等,那极有可能是你的系统管理控制器smc出现了问题,所以今天小编就来科普大家如何重置系统管理控制器smc。如…

bootstraptable treeGrid 懒加载_Java类加载机制及自定义加载器

一:ClassLoader类加载器,主要的作用是将class文件加载到jvm虚拟机中。jvm启动的时候,并不是一次性加载所有的类,而是根据需要动态去加载类,主要分为隐式加载和显示加载。隐式加载:程序代码中不通过调用Clas…

Idea打可执行jar包

前些日子试了下idea打包,有些细节没太注意所以经常打包失败,要不然就是显示没有主清单属性,所以一直用eclipse打包,今天又重新捣鼓了一下,写下过程: 1. 先添加需要打jar包的主入口 第三步一定不要放在main…

安卓系统挂载NTFS格式硬盘_Mac 读写 NTFS硬盘管理开源工具NTFSTool

NTFSTool是Mac OS 下一款开源的 NTFS 磁盘格式读写工具,基于Electron和VUE编写。遵守MIT开源协议。支持 NTFS 磁盘读写、挂载,退出、管理等功能。系统检测到插入移动硬盘后,会自动弹出 NTFSTool 界面,并自动挂载硬盘。安装NTFSToo…

【转】刨根究底字符编码之九——字符编码方案的演变与字节序

字符编码方案的演变与字节序 一、字符编码方案的演变 1. 根据前面的介绍,对于字符编码方案的演变,我们大致上可简单地划分为三个阶段: ① ASCII编码方案阶段 → ② ANSI编码方案阶段 → ③ Unicode/UCS编码方案阶段。 在第一个阶段的ASCII…

python人工智能_人工智能人才缺口千万!学Python抓住风口机会

前不久教育界的一个消息,引发了广泛的关注。今年9月,浙江三到九年级信息技术课将替换新教材,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材规划五六年级开始接触…

【转】刨根究底字符编码之十——Unicode字符集的字符编码方式

一、字符编码方式CEF的选择 1. 由于Unicode字符集非常大(并且作为开放字符集还在不断扩展之中),有些字符的编号(即码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用两个或两个以上字节。 比如,汉字“…

【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM

一、UTF-8编码方式 1. 接下来将分别介绍Unicode字符集的三种编码方式:UTF-8、UTF-16、UTF-32。这里先介绍应用最为广泛的UTF-8。 为满足基于ASCII、面向字节的字符处理的需要,Unicode标准中定义了UTF-8编码方式。UTF-8应该是目前应用最广泛的一种Unic…

流水灯verilog实验原理_IC设计实例解析之“流水线技术”

源自:微信公众号 “数字芯片实验室”在IC设计中,如果寄存器之间的组合逻辑延时过大,可能会称为设计中的关键路径,从而降低整个电路的工作频率。如下图所示,是一个输入和输出寄存的算术计算逻辑。在set_input_delay和se…

【转】刨根究底字符编码之十二——UTF-8究竟是怎么编码的

UTF-8究竟是怎么编码的 1. UTF-8编码是Unicode字符集的一种字符编码方式(CEF),其特点是使用变长字节数(即变长码元序列或称变宽码元序列)来编码。目前一般是1到4个字节,当然,也可以更长。 为什么要变长呢?这可以理解为按需分配…

iphone闪退修复工具_升级 iOS 14.2 微信闪退?iPhone 12 维修贵

原标题:升级 iOS 14.2 微信闪退?iPhone 12 维修贵昨天,苹果推出 iOS 14.2 正式版系统,我相信你们都知道了,主要新增几点功能,并没有针对性解决耗电问题,而对 AirPods Pro 充电进行优化&#xff…

【转】刨根究底字符编码之十三——UTF-16编码方式

1. UTF-16编码方式源于UCS-2(Universal Character Set coded in 2 octets、2-byte Universal Character Set)。而UCS-2,是早期遗留下来的历史产物。 UCS-2将字符编号直接映射为字符编码(CEF,而非CES,详见前文中对现代字符编码模型的解释)&a…