Vue项目中使用mockjs

1、插件版本

"axios": "^0.27.2",

"vue": "^2.6.14",

"mockjs": "^1.1.0",

2、在vue-cli搭建的项目根目录下新建一个js文件:mocks/index.js

2.1 简单使用mockjs

// 引入mockjs
import Mock from 'mockjs';

// 假数据
var menus = [
    {
        'menuId': 1,
        'menuName': '系统管理'
    },
    {
        'menuId': 2,
        'menuName': '用户管理'
    }
];

// mock模拟的接口
Mock.mock('sys/menu/list', 'get', function () {
    return {
        code: 0,
        message: 'success',
        data: menus
    }
});

2.2 mock接口较多可按模块拆分

mocks/index.js

// 引入mockjs
import Mock from 'mockjs';

// mock接口
import login from './api/login.js';
import config from './api/config.js';

login.install(Mock);
config.install(Mock);

mocks/api/login.js

const users = [
    { id: 1, username: 'admin', password: '123456', token: 'admin-token' },
    { id: 2, username: 'common', password: '123456', token: 'common-token' }
];
export default {
    install(Mock) {
        Mock.mock('/login', 'post', function (data) {
            const userData = JSON.parse(data.body);
            var user = users.find(item => item.username === userData.username && item.password === userData.password);
            if(user) {
                return {
                    code: 200,
                    msg: 'success',
                    token: user.token
                }
            } else {
                return {
                    code: 500,
                    msg: '用户不存在或密码错误',
                } 
            }
        });
        Mock.mock('/getInfo', 'get', function () {
            return {
                code: 200,
                msg: 'success',
                data: {
                    username: 'admin',
                    role: 'system',
                }
            }
        });
        Mock.mock('/logout', 'get', function () {
            return {
                code: 200,
                msg: 'success',
                data: true
            }
        });
    }
}

mocks/api/config.js

export default {
    install(Mock) {
        Mock.mock('sys/config/getConfig', 'get', function () {
            return {
                code: 200,
                msg: 'success',
                data: {
                    projectName: '管理平台',
                }
            }
        });
    }
}

3、在main.js中引入mock模拟接口

import Vue from 'vue';
import App from './App.vue';
import router from './router/index.js';

Vue.config.productionTip = false

// 引入mock数据
require('../mocks/index.js');

new Vue({
  render: h => h(App),
  router
}).$mount('#app')

4、使用mock模拟接口

<template>
  <div>
    vue-cli搭建的项目中使用mock数据
  </div>
</template>

<script>
import axios from 'axios';

export default {
  name: 'mock',
  mounted () {
    this.getData();
  },
  methods: {
    getData () {
      axios.get('sys/menu/list').then(res => {
        console.log(res)
      }).catch(error => {
        console.log(error)
      })
    }
  }
}
</script>

控制台输出结果:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值