Vue3项目配置Mock模拟接口数据

简介: Vue3项目配置Mock模拟接口数据

当一个项目开始开发,正常情况是前后台开发同时进行,但是很多情况是后台先提供接口,然后前端才开始编写页面,这样就会导致项目进度缓慢,为了解决这个问题,前端一般是根据接口先在本地进行数据模拟请求,本次我们使用Mockjs,实现在基于Vue3项目的数据模拟。

1.安装Mockjs

Mockjs提供npm包,所以安装比较方便

yarn add mockjs

复制

2.配置Mock

我们配置方法可以按照官方提供的,写的比较详细,这里我们稍微加点自己的方法,方便我们在添加mock模块的时候更加方便。

配置统一入口

在src文件夹下新建mock文件夹,文件夹中新建index.js,这个js文件作为统一入口文件,之后添加的所有的Mock数据都经过这个文件解析后,统一注册。

image.png

index.js文件内容如下:

/**
 * Mock配置文件
 **/
// 首先引入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);
    }
});

复制

main.js中导入

import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// 导入mock
require('./mock');
createApp(App)
  .use(store)
  .use(router)
  .mount("#app");

复制

3.编写模拟数据接口

编写请求数据方法

比如我们有个登录接口,一般我们会在src文件夹下新建api文件夹,里面定义我们所有的请求接口方法,这里,我们也不例外,src/api/basis/下新建login.js,内容如下:

import { liSend } from '@/utils/request'
// 测试请求
export const login = (obj) => { return liSend("post", "login", obj) };

复制

这里面我们只关注,请求方式是post,url是login。

编写mock返回数据方法

src/mock/basis/下新建login.js,内容如下:

/******************
 * 基础 - 登录 - mock
 *****************/
// 登录
let Login = {
    "code": 0,
    "msg": "success",
    "data": {}
}
export default {
    /**
     * 基础 - 登录
     * @param: {}    
     * @returns:Promise {<pending>}
     **/
    'post|login': option => {
        return Login
    }
}

复制

4.调用mock数据

新建组件

新建组件,组件内调用login方法,返回数据。

<template>
  <div>请求数据:{{ state.loginMsg }}</div>
  <button @click="loginBtn">获取mock数据</button>
</template>
<script>
import { reactive, provide } from "vue";
import { login as loginDemo } from "@/api/basis/login";
export default {
  setup(props, context) {
    const state = reactive({
      loginMsg: {}
    });
    const loginBtn = () => {
      loginDemo().then(res => {
        state.loginMsg = res;
      });
    };
    return {
      loginBtn,
      state
    };
  }
};
</script>

复制

预览效果

image.png

相关文章
|
4天前
|
JavaScript 前端开发
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
本文介绍了在Vue2或Vue3项目中如何使用Isotope(同位素)布局库来创建动态的网格布局,并提供了详细的代码实现和效果展示,包括过滤和排序功能。
10 0
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
|
4天前
|
前端开发 JavaScript API
基于Vue3+Hooks实现4位随机数和60秒倒计时
本文介绍了如何在Vue3中使用Hooks API来实现生成4位随机数和执行60秒倒计时的功能,并提供了详细的代码示例和运行效果展示。
21 1
基于Vue3+Hooks实现4位随机数和60秒倒计时
|
4天前
|
数据可视化 JavaScript
Vue3项目使用G6可视化组件实现一个树形机构图
在Vue 3项目中使用G6可视化组件库实现树形机构图的构建和展示。
32 1
Vue3项目使用G6可视化组件实现一个树形机构图
|
3天前
|
JavaScript 算法 API
Vue 3有哪些新特性
【8月更文挑战第16天】Vue 3有哪些新特性
20 1
|
4天前
|
JavaScript
基于Vue3实现简约型侧边栏
本文介绍了如何在Vue3项目中实现一个简约型侧边栏导航,包括配置路由、页面布局和导航交互,以及如何通过Vue Router和条件渲染实现动态内容展示。
26 1
|
4天前
|
JavaScript UED
如何在Vue3项目中使用防抖节流技巧
在Vue 3项目中使用防抖和节流技巧以优化组件性能,包括使用`lodash`库和自定义实现这两种方法。
8 0
如何在Vue3项目中使用防抖节流技巧
|
4天前
|
前端开发 JavaScript
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
本文介绍了如何在Vue3项目中实现一个鼠标拖动调整元素宽度的功能,并展示了点击按钮收起或展开侧边栏的效果,提供了完整的实现代码和操作演示。
45 0
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
|
4天前
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
本文介绍了在Vue3 + ElementPlus项目中如何使用`el-autocomplete`控件实现自动补全输入功能,并探讨了不同版本ElementPlus中`clearable`属性的兼容性问题。
22 0
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
|
4天前
Vue3使用createVNode和render函数实现仿 Antd 加载动效
本文展示了如何在Vue3项目中使用`createVNode`和`render`函数实现一个仿Ant Design加载动效的自定义组件,并提供了详细的实现代码和使用示例。
8 0
Vue3使用createVNode和render函数实现仿 Antd 加载动效
|
4天前
|
JavaScript
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
本文介绍了如何在Vue2+ElementUI和Vue3+ElementPlus项目中对`el-notification`组件增加倒计时进度条特效,并实现鼠标移入通知时暂停计时,鼠标移出时继续计时的功能。
17 0
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时