vue中控制mock在开发环境使用,在生产环境禁用方式


Posted in Vue.js onApril 06, 2022

vue控制mock在开发环境使用,在生产环境禁用

说下原因

mock拦截所有的axios请求,根据请求,做出相应的响应。平时前后端分离开发,我们使用mock获得相应的数据,但当和后端联调的时候,不禁用mock,就无法获得后端数据。

解决方案

第一步、我们设置mock在开发development环境可用,在生产production环境不可用。

在vue中通过设置main.js中的Vue.config.productionTip来决定模式。

默认为false是生产环境。我们将其设置为true即进入了开发环境,设置后,可在浏览器检查中看到You are runing Vue in development mode如下图:

vue中控制mock在开发环境使用,在生产环境禁用方式

第二步、我们在config/dev.env.js和config/prod.env.js中设置变量。相当于同一个变量名,在不同的模式下,有不同的值。

// dev.env.js下的配置。
module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  MOCK: true //开发环境使用mock
})
// prod.env.js下的配置
module.exports = {
  NODE_ENV: '"production"',
  MOCK: false // 生产环境禁用mock
}

同理,如果有其他在生产环境和开发环境取值不同的同名变量,可以定义在相应的文件中,如在axios请求时,不同环境有不同的baseURL,即可以设置。

第三步、在main.js中设置process.env.MOCK && require("./mock/index.js")。process.env.MOCK这句就是判断刚才设置的值,如果是true,才会执行语句引入mock,如果是false,则后面的语句不执行,即不引入mock。

vue中使用mock(常用方式) 

近期在学习Vue,碰到前端需要数据,自己手敲太麻烦,页面也不美观,于是想到了用mock。之前用过一次,但现在全忘了。所以在这里记录一下,以备不时之需。本文从项目建好后一步一步进行vue+mock的使用。

前期准备

1)新建一个vue项目

2)将helloworld.vue的内容删除,便于后期调试

3)新建一个按钮控件,绑定一个点击事件

vue中控制mock在开发环境使用,在生产环境禁用方式

安装axios和mock.js插件

使用npm方式安装

// 安装axios插件
npm install  axios --save
// 安装mockjs插件
npm install mockjs --save-dev

在main.js中引入

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import axios from 'axios'             // 新增
Vue.prototype.$axios = axios    // 新增

编写mock.js

在src下新建mock文件,并新建文件mock.js。代码编写详细可参考mock.js官网

下面给出简单的示例代码:

import Mock from 'mockjs'  // 引入mockjs
Mock.mock('/api/test',{
  data: {
    test: "test"
  }
})

调用

在helloworld中编写点击事件

methods: {
    test(){
      this.$axios({
        method: 'get',
        url: "/api/test"
      }).then(function(response) {
        console.log(response)
      })
      .catch(function(error) {
          console.log(error);
        });
    }
}

成功

vue中控制mock在开发环境使用,在生产环境禁用方式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。 

Vue.js 相关文章推荐
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
详解vue 组件注册
Nov 20 Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
如何实现vue的tree组件
Dec 03 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
vue3使用vuedraggable实现拖拽功能
vue整合百度地图显示指定地点信息
vue中使用mockjs配置和使用方式
VUE使用draggable实现组件拖拽
Apr 06 #Vue.js
教你部署vue项目到docker
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 #Vue.js
vue中div禁止点击事件的实现
Apr 02 #Vue.js
You might like
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
理解JavaScript中的对象 推荐
2011/01/09 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
django实现分页的方法
2015/05/26 Python
python字典基本操作实例分析
2015/07/11 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
python遍历目录的方法小结
2016/04/28 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
值传递还是引用传递
2015/02/08 面试题
幼教个人求职信范文
2013/12/02 职场文书
物理教学随笔感言
2014/02/22 职场文书
实习协议书范本
2014/04/22 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
离婚协议书格式
2014/11/21 职场文书
客房领班岗位职责
2015/02/11 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers