需求:最近活太忙了,实在是联调没有时间了,无奈又拾起来mockjs

1 安装mockjs

npm install mockjs

// 这是个只在开发的时候用,打包后就没有了,业务更安全
npm install mockjs --save-dev

2 main.js 自动配置导入mock文件

// 实际打包时应该不引入mock
/* eslint-disable */
if (process.env.NODE_ENV !== 'production') require('@/mock/mock.js')

3 mock目录为 @/mock/mock.js

这样写 ctrl+p 直接搜 mock.js就定位到文件了

4 mock的灵魂函数 Mock.mock()

帮助文档

https://github.com/nuysoft/Mock/wiki/Mock.mock()

函数就用这一个 完活

Mock.mock( rurl, template )

记录数据模板。当拦截到匹配 rurl 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。

5 template 动态参数帮助文档

http://mockjs.com/examples.html

6 设置延时

Mock.setup({ timeout: 1000 })

7 @/mock/mock.js 文件代码

@/mock/mock.js

import mock from './mockUtils'
import {
gbsCommunicationTempList
} from './mockList' let useAllMock = true
// 下面一行 取消注释 后将不使用mock 开发时候临时使用
// useAllMock = false
if (useAllMock) {
mock('/api/gbs/communicationTemp/list', gbsCommunicationTempList)
console.info('mock is running')
}

@/mock/mockUtils.js

import Mock from 'mockjs'
Mock.setup({ timeout: 200 }) const mock = (url, func) => {
const rurl = new RegExp(url.replace(/\//g, '\\/'))
// console.info('rurl', rurl)
Mock.mock(rurl, req => {
console.info('-')
console.info('-')
console.info('-==============================')
console.info('api url: ', req.url)
console.info('api params: ', req.body)
const data = func(req) const res = {
...data, // 返回 data节点 格式必须是 { data: 对象/数组 }
msg: '',
status: 20,
}
console.info('res => ', res)
return res
})
}
export default mock

@/mock/mockList.js

import Mock from 'mockjs'

export const gbsCommunicationTempList = req => {
return Mock.mock({
'data|10': [{
yourKey: 'yourContent',
...otherNodes
})
}

问题记录

早期库的版本是 "mockjs": "^1.0.1-beta3",

url拦截得用 正则 mock(/api/gbs/abc/list/, aaa)

看了个别人的用 或 也很好

'post|/demo': {
'name': '@cname'
}

更新下库 看看能改成字符串吗

"mockjs": "^1.1.0", 从新安装完 版本改成这个了

两个版本库 都是用的 rurl,所以又恢复成老库了

mock 2.0 版本

全局安装 mockjs npm install mockjs

mock数据放在业务目录下 mockData.js

接口调用的时候 this.$api(url, params, { mockData }).then(res => {})

全局 通过 window.isUseMock = true false 控制全局是否开启

if (process.env.NODE_ENV === 'development') window.isUseMock = true

export const api = (url, data, config = {}) => {
const { type = undefined, mockData = null } = config
if (mockData !== null && window.isUseMock) {
console.info('- + + -')
console.info('---- mock 请求 ----')
console.info('url: ', url)
console.info('params: ', { ...data })
console.info('res: ', mockData)
return new Promise(function (resolve, reject) {
resolve(mockData)
})
}

mockjs 前端写完 给后台调 mock.js | 改到2.0版本的更多相关文章

  1. 来,我们手写一个简易版的mock.js吧(模拟fetch && Ajax请求)

    预期的mock的使用方式 首先我们从使用的角度出发,思考编码过程 M1. 通过配置文件配置url和response M2. 自动检测环境为开发环境时启动Mock.js M3. mock代码能直接覆盖g ...

  2. 后台调用前台JS(查看客户端IE版本)

    1.前端代码    </form>    //注意放在form下面<script>    function readRegedit() {        var obj = n ...

  3. Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述

    挤一下: 一开始以为没有多少人用就没建群,但是加我的人太多了,好多问题都是重复的,所以建个群大家互相沟通交流方便点,但是建的有点晚,错过了好多人所以群里人有点少,QQ群: 157216616 小提示 ...

  4. 刚写完的商城erp + 这个商城前台,新鲜出炉。自己1个人写, 包括php框架和前端html页面.

    刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面. 刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面.

  5. 让前端攻城师独立于后端进行开发: Mock.js

    一.Mock.js是什么? 目前的大部分公司的项目都是采用的前后端分离, 后端接口的开发和前端人员是同时进行的. 那么这个时候就会存在一个问题, 在页面需要使用大量数据进行渲染生成前, 后端开发人员的 ...

  6. 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  7. 前后端分离之让前端开发脱离接口束缚(mock)

    情景:     领导:小吴啊,最近在忙什么啊?     前吴:(心想:我擦勒,难道划水被领导发现了?也不能怪我啊,后台的哥们接口还没给呢,但要是实话实说不就对不起后台哥们了吗?)           ...

  8. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  9. 前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密

    一.Vue-router(路由) 1.1路由创建 官网:https://router.vuejs.org/zh/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...

  10. 前端测试框架Jest系列教程 -- Mock Functions

    写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...

随机推荐

  1. Linux的进程管理 [补档-2023-07-25]

    Linux进程管理 9-1并发与并行: ​ 并发:在同一个cpu上,并且在一个时间段时,同时运行多个程序.比如在1000毫秒内,我们有5个程 序需要执行,所以我们可以将1000毫秒分为5个200毫秒, ...

  2. centos7多网口配置同网段IP解决方案

    环境 CentOS Linux release 7.9.2009 (Core) 需求 服务器eth0和eth1配置同网段IP地址.掩码不配网关,同时连接两根网线,对端是两台物理隔离的交换机. 现象 给 ...

  3. 位图|布隆过滤器模拟实现|STL源码剖析系列|手撕STL

    今天博主给大家带来位图和布隆过滤器的模拟实现. 前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_1149 ...

  4. 制作包含最新更新的Windows 10 LTSC 2021 ISO

    介绍 在制作桌面云windows 模板的时候,一般需要安装最新的更新.更新安装过程非常耗时,并且安装更新会导致桌面模板的磁盘空间膨胀.制作出的模板会占用很大的磁盘空间.如果不安装更新,模板大小约5G. ...

  5. MySQL-正则表达式规范

    MySQL中的正则表达式采用的是PCRE的规范,匹配时按字符进行. RLIKE 您可以使用RLIKE语句匹配正则表达式,支持的元字符如下表所示. 元字符 说明 ^ 行首. $ 行尾. . 任意字符. ...

  6. 探索C语言中的联合体与枚举:数据多面手的完美组合!

    ​ 欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 联合体的定义 联合体又叫共用体,它是一种特殊的数据类型,允许您在相同的内存位置存 ...

  7. Nginx实战-公网LB限流配置等

    前提: Nginx要实现根据ip地址进行限流与不限流的区分需要通过源码包安装GeoIP模块 找到与yum安装版本相同的源码包,通过configure进行安装 ./configure --prefix= ...

  8. 开年!5 款令人惊艳的开源项目「GitHub 热点速览」

    朋友们开工大吉啊!我刚从假期模式切换回来,完全无心工作有些不在状态,比如开机密码错了好几次.闲话少叙,下面就让我们一起看看,春节这段时间 GitHub 上又出了什么有趣.好玩的开源项目. 今年上来就是 ...

  9. CORS就是跨域吗?

    首先,跨域的域是什么? 跨域的英文是:Cross-Origin. Origin 中文含义为:起源,源头,出生地. 在跨域中,"域"指的是一个 Web 资源(比如网页.脚本.图片等) ...

  10. lombok-ex 编译时注解框架,性能完爆 AOP

    lombok-ex lombok-ex 是一款类似于 lombok 的编译时注解框架. 主要补充一些 lombok 没有实现,且自己会用到的常见工具. 编译时注解性能无任何损失,一个注解搞定一切,无三 ...