预览本文的实现效果:

# giteegit clone git@gitee.com:cloudyly/dscloudy-admin-single.git# githubgit 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 mastergit merge 05_MockJS

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

git push --all gitee_origingit push --all github_origin

程序员搞艺术

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

  1. 基于PyQt5的快速开发框架QFramer

    2019独角兽企业重金招聘Python工程师标准>>> QFramer 是基于PyQt5的一款快速开发框架 ####1. 基于Qt/ PyQt /PySide开发GUI常用的开发方式 ...

  2. Java微服务_医疗管理项目_基于若依快速开发框架

    一.项目简介 项目简介:尚医疗是专门为各大医院.门]诊提供的一款医疗管理平台.系统包含:系统 管理.药品进销存管理.看病就诊.收费管理.检查管理.数据统计等核心模块.通过尚医 疗系统可以快速方便的管理 ...

  3. 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理

    最近一直很多事情,博客停下来好久没写了,整理下思路,把最近研究的基于Metronic的Bootstrap开发框架进行经验的总结出来和大家分享下,同时也记录自己对Bootstrap开发的学习研究的点点滴 ...

  4. 基于.Net Core 快速开发框架

    NetCore 介绍 1.该项目采用了 IOC DI DDD OOP AOP SOA 设计模式 以及autofac Log4net Signalr EF 等主流中间件进行开发 2.数据层支持ado.n ...

  5. Web经典BS快速开发框架,强大后台+简洁UI一体化开发工具

    本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本框架,能够极大的提高项目开发效率. 整个框架包括三个版本:.net,.net core,java(开发中) 以上三个版本中,.NET为 ...

  6. 基于springboot+layui快速开发框架源码

    项目介绍 一款 Java 语言基于 SpringBoot2.x.Layui.Thymeleaf.MybatisPlus.Shiro.MySQL等框架精心打造的一款模块化.插件化.高性能的前后端分离架构 ...

  7. c# 基于WebApi的快速开发框架FastFramework

    一.框架简介 此框架是针对于webapi进行开发,项目分层是基于ABP框架的分层,更好的抽离业务逻辑关系,ABP是基于EF做数据访问层,本人个人比较喜欢Dapper,就把数据访问层封装成了Dapper ...

  8. 快速开发app,这个快速开发框架,整合PC、移动端开发,让开发更畅快!

    之前,有发过不少PC端快速开发的文章,但是现在越来越多的项目需要PC和移动端结合,所以,我给大家介绍一下之前快速开发平台的APP版本,希望大家能够体验一下,发表一下自己的看法.下载的话,在官网:www ...

  9. 基于Vue+SpringCloudAlibaba微服务电商项目实战-构建会员服务-011:基于Vue快速整合会员服务接口

    011:基于Vue快速整合会员服务接口 1 构建前端Vue项目调用后端接口实现联合登录效果演示 2 什么是微服务前后端分离开发的模式 3 联合登录接口接口简单回顾 4 前后端分离解决跨域的问题 5 V ...

最新文章

  1. java培训:什么是抽象类?怎么定义?
  2. R语言为dataframe添加新的数据列(add new columns):使用R原生方法、data.table、dplyr等方案
  3. Linux - 网络相关指令
  4. STM32 进阶教程 2 - micropython 使用
  5. 草履虫纳米机器人_激光驱动的机器人大军!Nature:机器人尺寸小于 0.1 毫米,4 英寸晶圆可容纳 100 万个...
  6. ssd_detected.cpp代码 head.h代码
  7. 被忽略的知识点——switch语句
  8. 二维burgers方程_二维Burgers方程的RKDG有限元解法
  9. SAP License:SD条件类型对应科目配置
  10. 如何设计自适应屏幕大小的网页(转)
  11. .NET Remoting学习笔记(二)激活方式
  12. Reverse Linked List 反转链表
  13. FLUENT 汽车流场仿真分析-结构网格划分视频教程
  14. matlab基本函数的输入输出,Matlab函数的基本使用
  15. 基于非负矩阵分解多视图聚类
  16. gateway笔记TODO
  17. 输入一个n维矩阵,输出它的转置矩阵
  18. 蜂鸟无线LR43B无线射频接收模块调试记录
  19. MMX的数据结构 MMX指令集
  20. 当且仅当函数依赖a→b在r上成立_数据库第06章关系数据理习题课.ppt

热门文章

  1. ffmpeg在android上输出滑屏问题处理
  2. HTML5中lineCap端点样式遇到closePath()
  3. Content Provider 基础 之URI
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第10篇]RSA和强RSA问题有什么区别
  5. 计算机论文搜索技巧【一】
  6. python单元测试的应用_单元测试pythongui应用程序的推荐方法是什么?
  7. jdk安装失败_windows配置安装单个Tomcat
  8. process启动jar包判断成功_恒一广告助力2020年壹基金温暖包安康发放启动仪式成功举办...
  9. 如何设置鼠标滚轮html,win7如何设置鼠标滚轮
  10. windows资源管理器已停止工作后,使用命令提示窗口拷贝文件和运行exe程序