主要思路:
- 单模块写Mock函数,模块内函数返回一个Mock配置项 —— url, type, data
- 通过一个文件,统筹管理所有模块(实现对某模块所有Mock的开关)
const mod = require('./mod')// 通过一个开关来决定是否执行模块内的代码function fnCreate(mod, isOpen = true) {if (isOpen) {for (let key in mod) {;((res => {if (res.isOpen !== false) {Mock.mock(res.url, res.type, (res) => {return res.data})}}))(mod[key]() || {})}}}
import * as sysMenu from './modules/sys-menu'import * as onlyMenu from './modules/only-menu'import * as marketDiscount from './modules/market-discount'// tips// 1. 开启/关闭[业务模块]拦截, 通过调用fnCreate方法[isOpen参数]设置.// 2. 开启/关闭[业务模块中某个请求]拦截, 通过函数返回对象中的[isOpen属性]设置.// 登录、菜单、角色选择相关fnCreate(sysMenu, false)fnCreate(onlyMenu, false)fnCreate(marketDiscount, false)/*** 创建mock模拟数据* @param {*} mod 模块* @param {*} isOpen 是否开启?*/function fnCreate(mod, isOpen = true) {if (isOpen) {for (let key in mod) {;((res) => {if (res.isOpen !== false) {Mock.mock(new RegExp(res.url), res.type, (opts) => {opts['data'] = opts.bodydelete opts.bodyconsole.log('\n')console.log('%cmock拦截, 请求: ', 'color:blue', opts)console.log('%cmock拦截, 响应: ', 'color:blue', res.data)return res.data})}})(mod[key]() || {})}}}
