vue配置和使用mockjs

简介: vue配置和使用mockjs

在前后端分离的开发中,需要前后端同时开发,但是在后端完成前,暂时是没有数据返回给前端使用的,如果先写静态后面再改,就有重复工作的内耗存在。

所以我们需要一种简单快速的模拟数据的模块,本文选的是mockjs。

步骤:

  1. 安装mockjs
npm install mockjs
  1. 在项目的src文件夹下建mock文件夹,在mock文件夹下建index.js(存放模拟的接口数据)
import Mock from 'mockjs';
const vehicle = Mock.mock(
  '/api/car', 'post', (req, res) => {
    return {
      code: 200,
      data: [{
        id: 1,
        name: 'BYD',
      }, {
        id: 1,
        name: 'baojun',
      }],
      message: '查询成功'
    }
  })
const user = Mock.mock(
  '/api/user', 'get', (req, res) => {
    return {
      code: 200,
      data: {
        id: 1,
        sex: 1,
        age: 25,
        createTime: '2017-04-01'
      },
      message: '查询成功'
    }
  })
export default {
  vehicle,
  user
}
  1. 为了方便在所有组件中使用mock模拟数据在项目的main.js中导入刚编辑的接口数据
import mockdata from "./mock"; //这样的话组件里就可以随意调用接口了
  1. 在组件中调用虚拟接口
    在生命周期钩子函数中调用接口即可:
    如使用axios 一个按钮执行点击事件,下面方法调接口
<button @click="search()">点击查询</button>
methods: {
    search() {
      this.$http.get("/api/user").then(res => {
        console.log(res);
      });
      this.$http.post("/api/car").then(res => {
        console.log(res);
      });
    }
  },

5. 在项目接口调试完成后需要删除main.js中对于mock的引用,以及mock/index.js这些模拟的资源,从而组件中不用做任何修改,最大减少重复工作量


如何使用mock

  1. 安装mockjs npm install --save-dev mockjs 或 npm install -D mockjs
  2. 根目录src中添加mock文件夹,如下图结构
  • index.js
import Mock from 'mockjs'
import { Service } from './data/service'
Mock.mock(/\/Service\/ServiceList/, 'get', Service )
console.log('%c前端 mock 环境启动成功', 'color: #38f;font-weight: bold')
export default Mock
  • service.js

mock模拟返回的数据

import Mock from 'mockjs';
const Service = [];
for (let i = 0; i < 5; i++) {
Service.push(Mock.mock({
 id: Mock.Random.guid(),
 serviceName: `${Mock.Random.protocol()} --${Mock.Random.id()}`,
 'port|8000-9000': 1,
 ip: Mock.Random.ip(),
 status: Mock.Random.pick(['passing', 'Critical', 'critical','null']),
 'node|0-2': 1 
}));
}
export default Service;
  1. 在main.js中引入定义的mock文件夹
import Mock from './mock'

打开终端控制面板,运行 npm run dev 后,打开开发者调试工具的console,可见

4. 发送的所有http请求均会被mock拦截,如果匹配到与mock中设置的url路径一致 /Service/ServiceList 就会将service.js的模拟出的数据返回,如下

import axios from "axios";
export default {
  data() {
    return {
    };
  },
  methods: {
    getServer() {
      axios
        .get('/Service/ServiceList')
        .then((res) => {
          console.log(res);
        })
        .catch((error) => {
          console.log(error);
        });
     }
  },
};

如上图,可以看出已经将发送给该url的请求匹配拦截并返回了一个对象,可以定义一个空数组将res.data的数据保存起来,到页面进行渲染

  1. 如果发送http请求的url与mock中定义的不匹配或不存在的话,就会弹出报错

注意:mock会拦截所有http请求,包括要请求的真实API,也会拦截,提示404报错;此时将main.js中的引入的 import Mock from ‘./mock’ 注释掉就好了

mock无侵入式配置

如何将mock在项目代码中分离,既能保证前后端分离开发,又能在不改代码的情况下任意切换环境;

vue-cli搭建好的项目框架中,会有直接配置好的 npm run dev 和 npm run build 环境;

那就再配置一套dev环境,重命名为mock,后期直接通过 npm run mock 和 npm run dev 一条指令随意切换代码运行环境

  1. 用vue-cli搭建好的项目框架,打开 package.json 文件,添加运行脚本
"mock": "webpack-dev-server --inline --progress --config build/webpack.mock.conf.js"
"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "mock": "webpack-dev-server --inline --progress --config build/webpack.mock.conf.js",   //---此条脚本就是需要配置的参数,注意json文件中不能写注释,切勿复制此句话
    "start": "npm run dev",
    "lint": "eslint --ext .js,.vue src",
    "build": "node build/build.js"
  },
  1. 在根目录下的build文件夹中创建 webpack.mock.conf.js 文件,并将 webpack.dev.conf.js 的文件内容全部复制过来
  2. 在 webpack.mock.conf.js 中添加配置,如下
let entry = baseWebpackConfig.entry
Object.keys(entry).forEach(function (name) {
 entry[name] = ['./src/mock'].concat(entry[name]) //---在运行npm run mock时将mock这个文件在entry中打包编译进来
})

保存好后,打开终端运行 npm run mock

后期如果需要与后台调试接口了,直接运行 npm run dev 即可切换过来,保证了mock在业务代码中抽离出

注意 :在 webpack.mock.config.js 中配置了entry后,是不需要在main.js中再引入Mock的


相关文章
|
1月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
6天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
29 1
|
1月前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
32 1
|
1月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
1月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
41 1
vue学习第一章
|
1月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
30 1
|
1月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
38 1
vue学习第四章