当前位置:首页 > 经验笔记 > VUE > 正文内容

vue-cli3.x不同环境打包运行不同api接口及打包后动态配置API地址

han32684年前 (2020-07-03)VUE3800

今天接到一个测试反馈说“我能不能我直接打包测试环境项目不用手动去改API”我第一反应就是这个测试这么懒!改个API都嫌麻烦,但是仔细一想毕竟"懒惰使人进步"嘛!

    开干!

添加测试环境

vue-cli3.x默认只有开发环境和生产环境  

    image.png

自己可以增加命令,有了开发环境和生产环境就增加测试环境就行了

    image.png

  "scripts": {
    "test":"vue-cli-service serve --mode test",
    "test-build": "vue-cli-service build --mode test",
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },

增加之后就命令就变成:

    运行开发环境:npm run serve

    运行测试环境:npm run test

    打包测试环境:npm run test-build

    打包开发环境:npm run build

    请使用powershell命令工具运行 vscode报错

    image.png

命令增添好了这么判断不同模式不同API呢?

console.log(process.env.NODE_ENV)

    可以运行不同模式打印“process.env.NODE_ENV”里面是什么内容 我这里就演示了

默认的:

    production //是生产环境

    development //是开发环境

    我们新增的 test //是测试环境

不同环境判断不同接口

在你自己封装的api接口里面去判断我这里写在main.js里面

if(process.env.NODE_ENV === 'production'){//生产环境地址
      axios.defaults.baseURL = 'http://192.168.1.200:8082/'
    }else if(process.env.NODE_ENV === 'development'){//开发环境地址
      axios.defaults.baseURL = 'http://192.168.1.200:8082/'
    }else{//测试环境地址
      axios.defaults.baseURL = 'http://192.168.1.200:8082/'
    }

    这样就实现了 打包不同环境使用不同API接口了

    我们还可以配置 vue.config.js 设置打包测试环境和生产环境在不同目录

代码如下:

 outputDir: process.env.NODE_ENV === "test" ? "testdist" : "dist"

不知道vue.config.js看看官方文档吧! 直达车-》 

项目打包后如何修改API接口

    有的时候我们项目已部署在线上了更换服务器或者其他操作需要更换前端API接口

    重新build打包一遍上传部署也是很麻烦建一个配置文件直接修改已在线上项目!

步骤如下:

public文件夹下新建apiconfig.js内容如下

    image.png

window.gurl={
    AXIOS_TIMEOUT:10000,
    SERVICE_CONTEXT_PATHAPI:'http://192.168.1.200:8082/',
}

    index.html引入此js文件

<script type="text/javascript" src="./apiconfig.js"></script>

    判断接口修改为

if(process.env.NODE_ENV === 'production'){//生产环境地址
      axios.defaults.baseURL = 'http://192.168.1.200:8082/'
    }else if(process.env.NODE_ENV === 'development'){//开发环境地址
      axios.defaults.baseURL = window.gurl.SERVICE_CONTEXT_PATHAPI
    }else{//测试环境地址
      axios.defaults.baseURL = 'http://192.168.1.200:8082/'
    }


扫描二维码推送至手机访问。

版权声明:本文由瀚文博客发布,如需转载请注明出处。

本文链接:http://hanwenblog.com/post/14.html

分享给朋友:

相关文章

vue强制更新$forceUpdate()

vue强制更新$forceUpdate()

vue强制更新$forceUpdate()添加this.$forceUpdate();进行强制渲染,效果实现。搜索资料得出结果:因为数据层次太多,render函数没有自动更新,需手动强制刷新。调用强制...

element-ui Tree 树形控件实现单选 最简方法VUE

做项目时需要用到Tree树形控件单选但是Tree组件没有单选设置,网上找了几个方法不太适应,看了官网文档发现很简单 代码如下      &n...

基于vue的移动端图片裁剪压缩处理

效果展示:原作者介绍:传送门原作者github:传送门基于原作者封装的组件:传送门基于原作者+vant UI封装的组件:传送门...

vue中$set的使用踩坑日记

vue中$set的使用踩坑日记

1、为什么要用set?在vue中,并不是任何时候数据都是双向绑定的。在官方文档中,有这样一段话,如下:从文档得知,当数据没有被双向绑定的时候,我们就需要使用set了2、set用法解决数据没有被双向绑定...

vue跳转时打开新窗口的方法

    1、<vue-link>标签实现新窗口打开    官方文档中说 v-link 指令被 <rou...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。