vue根據不同的環境配置接口路徑,帶不同版本號的接口路徑配置,腳手架2及3以上都可以配置

首先創建兩個不同環境的文件;
注意:VUE_APP_BASE_API需要和下面的都對應
生產環境:

#.env.development
# just a flag
ENV = "development"
#鍵值對,必須以VUE_APP開頭 
# base api  

VUE_APP_BASE_API = "http://XXXXXXX"

在這裏插入圖片描述
開發環境:
window.location.origin是指定發佈環境的地址,不用每次手動去改了

#.env.production
# just a flag
ENV = "production"
# 鍵值對,必須以VUE_APP開頭
# base api

VUE_APP_BASE_API =  window.location.origin

在這裏插入圖片描述
創建好之後,利用vue.config.js的代理去指定環境process.env.VUE_APP_BASE_API,如果不使用代理的話,下面代碼可忽略

proxy: {
      '/api': {
        target: process.env.VUE_APP_BASE_API,
        changeOrigin: true,
        secure: false,
        ws: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }

在這裏插入圖片描述
然後再請求封裝axios的時候,創建axios實例時透露給baseURL,
如果不使用下面的這種的話,
也可以用***axios.defaults.baseURL***代替下面的

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API + '/v1', // url = base url + request url
  withCredentials: true // 跨域請求時發送Cookie
})

在這裏插入圖片描述
如果你不知道是否切換正常沒,可以再main.js打印看看

console.log(process.env.VUE_APP_BASE_API, '環境')

上面是針對發佈到服務器上和後端在不同文件夾下的!!!

--------------------------------------分段了----------------------------------------

問題是我們後端偏偏把前端和後端的放在一個文件夾下,導致了很多的問題
開發環境的文件需要這樣寫:VUE_APP_BASE_API =
至於爲什麼我也未可知

#.env.production
# just a flag
ENV = "production"
# 鍵值對,必須以VUE_APP開頭
# base api

VUE_APP_BASE_API = 

在這裏插入圖片描述
在請求攔截器內:

let url
    if (process.env.NODE_ENV === 'development') {
      url = config.baseURL + config.url
    } else if (process.env.NODE_ENV === 'production') {
      url = config.url
    }
    config.url = url

在這裏插入圖片描述
就可以了
一般最前面說的方法是大衆型的,我說的是特殊的情況,所以特殊對待,可以忽略。。。O(∩_∩)O

vue cli2的也說一下吧,畢竟還有在用的人
在config文件下新建兩個js文件
分別爲:
dev.env.js(開發環境)

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  API:'//http://XXXXXXXXXX'
})

在這裏插入圖片描述

prod.env.js(生產環境)

在這裏插入代碼片'use strict'
const target = process.env.npm_lifecycle_event;
if (target == 'build:dev') {
    //測試
    var obj = {
        NODE_ENV: '"development"',
        //post用當前域名
        API_ROOT: '""',
        //數據字典
        API_ROOT_DICT:'"http://XXXXXXXXXX"',
    }
}else {
    //線上
    var obj = {
        NODE_ENV: '"production"',
        //post用當前域名
        API_ROOT: '""',
        //數據字典
        API_ROOT_DICT:'window.location.origin',
    }
}
module.exports = obj;

在這裏插入圖片描述
在config目錄下的index.js文件引入

env:require('./dev.env')

在這裏插入圖片描述
這樣子就好了!!!(●’◡’●)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章