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

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

han32685年前 (2020-07-03)VUE4173

今天接到一个测试反馈说“我能不能我直接打包测试环境项目不用手动去改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/'
    }


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

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

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

分享给朋友:

相关文章

基于Vue的移动端图片裁剪组件(Clipic)可自动压缩

基于Vue的移动端图片裁剪组件(Clipic)可自动压缩

安装:Bashnpm install --save clipic使用代码:Markup<template>     ...

ElementUI的el-cascader级联选择器组件获取选中的label | VUE

ElementUI的el-cascader级联选择器组件获取选中的label | VUE

例如上图,需要拿到全部/设备:设备123<el-cascader   ref="myCascader"   :options=&q...

vue强制更新$forceUpdate()

vue强制更新$forceUpdate()

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

vue中$set的使用踩坑日记

vue中$set的使用踩坑日记

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

简单理解Vue中的nextTick

简单理解Vue中的nextTick

官方文档:Vue 在更新 DOM 时是异步执行的,为了在数据变化之后等待 Vue 完成更新 DOM,可以在数据变化之后立即使用 Vue.nextTick(callback)。这样回调函数将在 DOM...

发表评论

访客

看不清,换一张

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