首页 > 其他分享 >Vue项目中使用mock

Vue项目中使用mock

时间:2023-05-19 15:36:51浏览次数:33  
标签:Vue 05 项目 js axios import mock


  1. 概念: mock是一个模拟数据生成器,旨在帮助前端独立于后端进行开发,帮助编写单元测试。
  2. mock有如下功能:

根据数据模板生成模板数据

模拟ajax请求,生成请求数据

基于html模板生成模拟数据

  1. 安装mockjs
npm install mockjs
  1. 在src文件夹下新建mock文件夹

Vue项目中使用mock_vue


5. 在mock文件夹下新建index.js文件引入mock

/*
 * @Descripttion:
 * @version:
 * @Author: zhangfan
 * @email: [email protected]
 * @Date: 2020-07-05 09:24:05
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-07-05 09:48:22
 */
// 首先引入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);
    }
});
  1. 在main.js中引入mock
/*
 * @Descripttion: 
 * @version: 
 * @Author: zhangfan
 * @email: [email protected]
 * @Date: 2020-05-15 17:15:58
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-07-05 11:07:24
 */
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'


require('./mock/index.js');

Vue.use(ElementUI)


//引入axios
import axios from 'axios';
Vue.prototype.axios = axios;

// 导入一个当前系统的全局基本样式
import '../static/css/reset.css';

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
  1. 在mock文件夹下新建demoList.js
/*
 * @Descripttion:
 * @version:
 * @Author: zhangfan
 * @email: [email protected]
 * @Date: 2020-07-05 09:59:24
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-07-05 10:58:15
 */
let demoList = {
    status: 200,
    message: 'success',
    data: [{
        id: 1,
        name: 'xiaoming',
        age: '21',
        job: '前端工程师'
    }, {
        id: 2,
        name: 'xiaozhang',
        age: '28',
        job: '后端工程师'
    }]
};
let demoList2 = [{
    id: 1,
    name: 'lisi',
    age: '20',
    job: '测试工程师'
}, {
    id: 2,
    name: 'zhangsan',
    age: '30',
    job: '产品经理'
}];
export default {
    'get|/parameter/query': demoList,
    // 也可以这样写
    // 官方解释为:记录用于生成响应数据的函数。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。
    'get|/parameter/query': (option) => {
        // 可以在这个地方对demoList2进行一系列操作,例如增删改
        // option 指向本次请求的 Ajax 选项集,含有 url、type 和 body 三个属性
        return {
            status: 200,
            message: 'success',
            data: demoList2
        };
    }
}
  1. 在页面中调用在demoList.js创建的数据
<!--
 * @Descripttion: 
 * @version: 
 * @Author: zhangfan
 * @email: [email protected]
 * @Date: 2020-05-15 17:21:05
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-07-05 11:03:09
--> 
<template>
  <div class="hello">
    <el-button @click="getDemoList">获取数据</el-button>
  </div>
</template>

<script>
export default {
  name: "index",
  data() {
    return {};
  },
  methods: {
    /**
     * @name:获取Mock.js中数据
     * @test: test font
     * @msg:
     * @param {type}
     * @return:
     */
    getDemoList() {
      this.axios({
        method: "get",
        url: "/parameter/query"
      })
        .then(res => {
          console.log(res);
        })
        .catch(resp => {
          console.log("请求失败:" + resp.status + "," + resp.statusText);
        });
    }
  }
};
</script>

<style scoped>
</style>

Vue项目中使用mock_数据_02


标签:Vue,05,项目,js,axios,import,mock
From: https://blog.51cto.com/u_16120408/6312740

相关文章

  • Vue中的动态组件
    1,定义:动态组件就是将几个组件放在一个挂载点下,这个挂载点就是标签,其需要绑定is属性,属性值为父组件中的变量,变量对应的值为要挂载的组件的组件名,然后根据父组件里某个变量来动态显示哪个,也可以都不显示,2,使用:<component>元素是vue里面的一个内置组件。在里面使用v-bind:is,可以实现......
  • Vue过滤器-filter
    1.局部定义过滤器<!--*@Descripttion:vue过滤器-filter*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-07-0309:10:28*@LastEditors:zhangfan*@LastEditTime:2020-07-1414:13:56--><template><divclass="......
  • Vue中的懒加载和按需加载
    1.懒加载懒加载也叫延迟加载,即在需要的时候进行加载,随用随载。vue项目打包的时候,如果项目比较庞大,那么将会打出一个很大的包,速度比较慢,这个时候可以考虑拆分,不要把所有的内容都打到一个包里面去。1.路由懒加载:我们平常使用router可能如下:importVuefrom'vue'importRouterfro......
  • Vue watch的immediate和deep
    1.immediateimmediate表示立即执行的意思,这样就是说不用等到value变化才会执行,默认的时候就会立刻执行一次。假设我们页面上有一个搜索框,每次输入内容的时候去请求一个接口,同时一进页面的时候需要调一下这个接口,我们可能一般这样写:<!--作者:zhangfan页面名称:watch的immediate和de......
  • 使用Vue脚手架工具快速搭建vue项目
    全局安装webpack使用npm(需要安装node环境)全局安装webpack,打开命令行工具输入:npminstallwebpack-g或者(npminstall-gwebpack),安装完成之后输入webpack-v,如下图,如果出现相应的版本号,则说明安装成功。全局安装vue-cli,在cmd中输入命令:(cnpminstall-g@vue/cli)用vue-cli来构建......
  • Vue生命周期钩子函数
    每个Vue实例创建时,都会经历一系列的初始化过程,同时也会调用相应的生命周期钩子,我们利用这些钩子,可以在合适的时机执行我们的业务逻辑。vue生命周期共分为四个阶段,八个基本钩子函数<script>exportdefault{data(){return{filter:"all",};},beforeCre......
  • less在vue项目中的全局变量设置
    1,使用全局变量的目的:sass或者less都提供变量设置,在需求切换主题的项目中使用less或者sass变量,只要修改变量值,编译后所有用到该变量的样式都会被修改为你想要的效果2,安装sass-resources-loadernpminstallsass-resources-loader--save-dev3,找到build文件夹下面的utils.jsreturn{......
  • 书城项目
    书城项目第一阶段:表单验证验证用户名:必须由字母,数字下划线组成,并且长度在5-12位验证密码:必须由字母,数字下划线组成,并且长度为5-12位验证确认密码:和密码相同邮箱验证:[email protected]验证码:现在只需要验证用户已输入,因为还没将到服务器,验证码生成。1、新建一个模块2、把书城的......
  • Vue.js学习记录之在元素与template中使用v-if指令实例(转贴)
    语法比较简单,直接上代码:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title></title> <scriptsrc="https://cdn.bootcss.com/vue/2.2.2/vue.......
  • 记一次前后端项目Nginx代理出现的“405”问题
    事情的起因是这样的:因为好久没有写前端代码了对前端打包部署这块有点抵触公司的有个小项目是前端vue+后端springboot实现的在部署的时候通过nginx反向代理去实现跨域(这块nginx一直都是简单的使用也没有过深的了解包括之前也用过nginx+memache实现的灰度部署的方案)总感觉很......