MOCK在VUE项目中的使用

服务端小伙伴的电脑中病毒,代码全部丢失,导致我们没办法进度同步,才给了我一次实践mock的机会,心痛!

环境描述

vue项目、抽了一个request的工具包

//request.js

import axios from 'axios'
/**
 * axios
 * @param url
 * @param token
 * @param params
 * @param method
 * @param removeLoading
 * @param allowRepeat
 * @returns {Promise<unknown>}
 */
function request(url, token, params, method) {
    // let host = 'https://********'
    let host = ''
    let _method = 'post'
    if (typeof(method) !== 'undefined') {
        _method = method
    }
    console.log(params)
    return new Promise((resolve, reject) => {
        axios({
            method: _method,
            url: host + url,
            params: params,
            headers: {
                'content-type': method == 'get' ? 'application/json' : 'application/x-www-form-urlencoded',
                'Accept': 'application/json',
                'token': token
            }
        }).then(function(res) {
            if (res.status === 200) {
                resolve(res.data)
            } else {
                // this.$Message.error(res.statusCode)
            }
        }).catch(function(error){
            reject(error);
        });
    })

}

export default request

处理方法

假设已经搭建好vue项目,接下来:

1. 安装mock

npm install mockjs --save-dev

2. 在src文件夹下新建mock文件夹,并创建index.js

//  src/mock/index.js

// 首先引入Mock
const Mock = require('mockjs');

// 设置拦截ajax请求的相应时间
Mock.setup({
    timeout: '200-600'
});

let configArray = [];

// 使用webpack的require.context()遍历所有mock文件
const files = require.context('.', true, /\.js$/);
files.keys().forEach((key) => {
    if (key === './index.js') return;
    configArray = configArray.concat(files(key).default);
});

// 注册所有的mock服务
configArray.forEach((item) => {
    for (let [path, target] of Object.entries(item)) {
        let protocol = path.split('|');
        Mock.mock(new RegExp('^' + protocol[1]), protocol[0], target);
    }
});

3. 在mock文件夹下创建js文件,例如sendCode.js

// sendCode.js

let demoList = {
    status: 200,
    message: 'success'
};
export default {
    'post|/user/sendCode': demoList
}

重新启动项目就OK啦~

PS:之前存在的问题是,当request.js文件下的host变量如果有原本的接口请求地址时,mock就不起作用,得把host变量置空字符串即可,记得正式发布时要改回来。为服务端小伙伴祈福,祝你电脑永不中毒,代码再无bug,上线从来不垮,服务永远不崩................呜呜呜

参考:vue使用mock配置步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值