最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue項目打包后可修改基礎(chǔ)接口地址配置的具體操作

 更新時間:2022年08月01日 14:53:43   作者:無解的菜鳥暉  
vue項目打包過后發(fā)現(xiàn)地址錯了或者發(fā)布到別的服務(wù)器發(fā)現(xiàn)請求的地址不對,每次都要去重新打包,太浪費(fèi)時間,下面這篇文章主要給大家介紹了關(guān)于Vue項目打包后可修改基礎(chǔ)接口地址配置的具體操作,需要的朋友可以參考下

一、目的

最近在學(xué)習(xí)或工作中遇到,把 Vue 前端項目打包后,要求可以再次修改請求后端接口的基礎(chǔ)地址。平常開發(fā)中在 Vue 項目中使用 axios 時把請求后端接口的基礎(chǔ)地址寫在了 baseURL 里。

這樣子打包后如果要改圖里紅框處的地址,要么去打包編譯后的文件堆里一個個搜索(如果項目不小的話,這文件堆可不少...),找到后直接改,要么在源碼里改完后重新再打包部署,這兩種做法都顯得有些麻煩,且維護(hù)性也不好。

所以本文用一種較好的方案來解決以上問題,通過創(chuàng)建一個靜態(tài)資源里的外部文件,引入并實時獲取,實現(xiàn)在 Vue 項目打包后也能方便修改請求后端接口的基礎(chǔ)地址。

二、具體操作實現(xiàn)

1、前提:本文基于 vue-cli 3.x / 4.x 來實現(xiàn)的,相對應(yīng) vue-cli 2.x 來說,沒有那么多復(fù)雜的配置操作(少了 build、config 文件夾和一些配置文件,多了 public 文件夾和 vue.config.js 文件)。

2、public 文件夾就是存放那些不需要打包的文件,可以直接訪問(靜態(tài)資源),創(chuàng)建一個含有請求后端接口基礎(chǔ)地址的文件 config.json 放在此目錄下( npm run build 時該文件不會受影響),如下圖:

{
  "BASE_URL_DEV": "https://www.dev-api.com",
  "BASE_URL_PROD": "https://www.prod-api.com"
}

3、 接下來在 main.js 文件中請求定義的配置文件,并寫入 Vue.prototype,使其可全局訪問。同時創(chuàng)建 Vue 實例也放在請求后,為了防止頁面生成和請求的數(shù)據(jù)有出入。相關(guān)代碼如下:

import axios from 'axios'
import { getUrlParams } from './utils/index'  // 工具函數(shù):獲取 URL 上的參數(shù)
 
Vue.prototype.$axios = axios
 
function getServerConfig() {  // 定義
  axios.get('./config.json').then(res => {  // 請求上面描述的本地配置文件
    const urlDev = getUrlParams('env')  // 當(dāng) URL 上存在 env=prod 時請求地址為生產(chǎn)環(huán)境的
    Vue.prototype.BASE_URL = urlDev == 'prod' ? res.data.BASE_URL_PROD : res.data.BASE_URL_DEV 
    console.log('接口配置的基礎(chǔ)地址', Vue.prototype.BASE_URL)
    new Vue({
      el: '#app',
      router,
      store,
      render: h => h(App)
    })
  })
}
 
getServerConfig()  // 執(zhí)行
 

這里有個獲取 URL 上參數(shù)的工具函數(shù),寫在 utils/index.js 里,相關(guān)代碼如下:

// 獲取 URL 上的參數(shù)
export function getUrlParams(name) {
  if (name == null || name === 'undefined') { 
    return null
  }
  var searchStr = decodeURIComponent(window.location.href).replace('?', '&')
  var infoIndex = searchStr.indexOf(name + '=')
  if (infoIndex === -1) { 
    return null
  }
  var searchInfo = searchStr.substring(infoIndex + name.length + 1)
  var tagIndex = searchInfo.indexOf('&')
  if (tagIndex !== -1) { 
    searchInfo = searchInfo.substring(0, tagIndex)
  }
  return searchInfo
}

4、然后對 Vue 項目里封裝的 axios 文件 request.js 做點改造,目的是通過函數(shù)返回值能實時獲取到基礎(chǔ)接口地址的變更,這樣后續(xù)打包部署的項目不用重新啟動,直接刷新頁面就可以。相關(guān)代碼如下:

import Vue from 'vue'
import axios from 'axios'
 
function getBaseUrl(){
  return Vue.prototype.BASE_URL
}
 
const service = axios.create({
  baseURL: getBaseUrl(),  // 打包后可配置的方式
  withCredentials: true,
  timeout: 50000 // request timeout
})
 
//  ... 其余剩下部分與本文無關(guān),就沒有寫出了 ...

5、最后進(jìn)行驗證,在 URL 上帶不同參數(shù),本地運(yùn)行項目后查看控制臺輸出。

修改 config.json 文件里的內(nèi)容如下,再次驗證。

本地運(yùn)行驗證通過后,npm run build 打包后再驗證。

剩下就是部署發(fā)布的操作了(不屬于本文講述范圍了哈),以后如果該項目請求后端接口地址變動,只需要改動打包后文件夾(dist 文件夾)里的 config.json 文件,無需重新啟動部署的項目,只需要刷新頁面就可以了。 

總結(jié)

到此這篇關(guān)于Vue項目打包后可修改基礎(chǔ)接口地址配置的文章就介紹到這了,更多相關(guān)Vue打包后修改基礎(chǔ)接口地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中動態(tài)獲取變量名并賦值方式

    vue中動態(tài)獲取變量名并賦值方式

    這篇文章主要介紹了vue中動態(tài)獲取變量名并賦值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue3中實現(xiàn)網(wǎng)頁時鐘功能(顯示當(dāng)前時間并每秒更新一次)

    Vue3中實現(xiàn)網(wǎng)頁時鐘功能(顯示當(dāng)前時間并每秒更新一次)

    本文將詳細(xì)介紹如何在Vue3中實現(xiàn)一個每秒鐘自動更新的網(wǎng)頁時鐘,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-07-07
  • vue?perfect-scrollbar(特定框架里使用非該框架定制庫/插件)

    vue?perfect-scrollbar(特定框架里使用非該框架定制庫/插件)

    這篇文章主要為大家介紹了vue?perfect-scrollbar在特定框架里使用一款并非為該框架定制的庫/插件如何實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-05-05
  • vue各種時間類型轉(zhuǎn)換方法例子

    vue各種時間類型轉(zhuǎn)換方法例子

    前端前后端接?處理時經(jīng)常會遇到需要轉(zhuǎn)換不同時間格式的情況,下面這篇文章主要給大家介紹了關(guān)于vue各種時間類型轉(zhuǎn)換的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 將Vue組件庫更換為按需加載的方法步驟

    將Vue組件庫更換為按需加載的方法步驟

    這篇文章主要介紹了將Vue組件庫更換為按需加載的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 用Vue-cli搭建的項目中引入css報錯的原因分析

    用Vue-cli搭建的項目中引入css報錯的原因分析

    本篇文章主要介紹了用Vue-cli搭建的項目中引入css報錯的原因分析,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue中的MVVM模式使用及說明

    Vue中的MVVM模式使用及說明

    這篇文章主要介紹了Vue中的MVVM模式使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue項目實現(xiàn)webpack配置代理,解決跨域問題

    vue項目實現(xiàn)webpack配置代理,解決跨域問題

    這篇文章主要介紹了vue項目實現(xiàn)webpack配置代理,解決跨域問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法

    Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法

    這篇文章主要介紹了Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法的相關(guān)資料,需要的朋友可以參考下
    2025-02-02
  • element的el-table中記錄滾動條位置的示例代碼

    element的el-table中記錄滾動條位置的示例代碼

    這篇文章主要介紹了element的el-table中記錄滾動條位置的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論

永春县| 镇宁| 阜宁县| 连云港市| 绥江县| 古浪县| 靖江市| 德惠市| 张家港市| 南平市| 垦利县| 石渠县| 皋兰县| 高雄市| 松桃| 镇远县| 达孜县| 吉首市| 日照市| 廊坊市| 陆良县| 广饶县| 霍城县| 富顺县| 依安县| 靖边县| 古田县| 板桥市| 新泰市| 海淀区| 南城县| 大洼县| 海南省| 大宁县| 曲阜市| 于田县| 兰西县| 乌什县| 冀州市| 黄浦区| 安顺市|