欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue新建環(huán)境變量以及網(wǎng)絡(luò)請(qǐng)求工具axios的二次封裝詳解

 更新時(shí)間:2023年06月20日 11:08:49   作者:風(fēng)中凌亂的男子  
這篇文章主要為大家介紹了vue新建環(huán)境變量以及網(wǎng)絡(luò)請(qǐng)求工具axios的二次封裝詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. 【環(huán)境變量】背景:

  • 在我們的實(shí)際項(xiàng)目開(kāi)發(fā)中,一般會(huì)區(qū)分幾個(gè)環(huán)境,分別是開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境生產(chǎn)環(huán)境,當(dāng)然不排除分的比較細(xì)的還有預(yù)發(fā)布環(huán)境,一般來(lái)說(shuō)這四個(gè)環(huán)境就足夠我們使用了。

2. 新建環(huán)境步驟:

2.1 在根目錄下新建4個(gè)環(huán)境變量文件:

  • .env.dev【開(kāi)發(fā)環(huán)境】
  • .env.test【測(cè)試環(huán)境】
  • .env.uat【預(yù)發(fā)布環(huán)境】
  • .env.prod【生產(chǎn)環(huán)境】
  • 四個(gè)環(huán)境內(nèi)的文件內(nèi)容如下:
//.env.dev文件
NODE_ENV = dev
# base url
VUE_APP_BASE_URL = "https://dev.it98k.cn"
--------------------------------------------------------------
//.env.test文件
NODE_ENV = test
# base url
VUE_APP_BASE_URL = "https://test.it98k.cn"
--------------------------------------------------------------
//.env.uat文件
NODE_ENV = uat
# base url
VUE_APP_BASE_URL = "https://uat.it98k.cn"
--------------------------------------------------------------
//.env.prod文件
NODE_ENV = prod
# base url
VUE_APP_BASE_URL = "https://prod.it98k.cn"
--------------------------------------------------------------

2.2 修改package.json【scripts】下的啟動(dòng)命令:

"scripts": {
    "serve": "vue-cli-service serve --mode dev",
    "build:test": "vue-cli-service build --mode test",
    "build:uat": "vue-cli-service build --mode uat",
    "build:prod": "vue-cli-service build --mode prod"
  },
  • 這樣修改完,本地啟動(dòng)項(xiàng)目命令依然是:npm run serve
  • 打包測(cè)試環(huán)境的命令是:npm run build:test
  • 打包預(yù)發(fā)布環(huán)境的命令是:npm run build:uat
  • 打包生產(chǎn)環(huán)境的命令是:npm run build:prod

3. 【基于axios的二次封裝】背景:

  • 在實(shí)際開(kāi)發(fā)項(xiàng)目中,網(wǎng)絡(luò)請(qǐng)求基本上使用axios網(wǎng)絡(luò)請(qǐng)求工具,但是單純的使用像axios.get('http://xxxxx.com')來(lái)請(qǐng)求接口,隨著項(xiàng)目越來(lái)越大,頁(yè)面越來(lái)越多,功能越來(lái)越完善,我們勢(shì)必會(huì)寫(xiě)大量的axios請(qǐng)求,每次都這么寫(xiě),費(fèi)時(shí)費(fèi)力,也不方便統(tǒng)一管理,所以,需要將axios進(jìn)行二次封裝,以達(dá)到我們開(kāi)發(fā)項(xiàng)目的時(shí)候省時(shí)、省力、省心。

3.1新建utils/request.js文件

第一步,在src目錄下,新建utils/request.js文件,文件內(nèi)容如下:

//首先引入axios
import axios from 'axios'
//然后通過(guò)create方法來(lái)創(chuàng)建一個(gè)請(qǐng)求服務(wù)
//然后create方法內(nèi)有一些配置項(xiàng),比如接口域名`baseURL`、接口請(qǐng)求超時(shí)時(shí)間`timeout`
//接口url`url`
//接口請(qǐng)求方式`method`等等,需要我們按需傳入
// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL, // 完整的api地址 = 接口域名+ 接口路徑
  timeout: 5000 // 請(qǐng)求超時(shí)時(shí)間 5s
})
//下面會(huì)定義兩個(gè)攔截器,分別是 `請(qǐng)求攔截器`,`響應(yīng)攔截器`
//`請(qǐng)求攔截器`是前端請(qǐng)求后端接口前處理的一些邏輯,比如開(kāi)啟loading,配置header請(qǐng)求頭等等
//`響應(yīng)攔截器`就是后端響應(yīng)我們前端,返回回來(lái)的數(shù)據(jù),比如我們可以在這響應(yīng)攔截器內(nèi)拿到status Code
//拿到后端接口返回的code,關(guān)閉loading、根據(jù)code碼處理一些詳細(xì)的邏輯等等一系列操作
//request interceptor   請(qǐng)求攔截器  
service.interceptors.request.use(
  config => {
    // do something before request is sent。在發(fā)送請(qǐng)求之前做一些事情
    config.headers['token'] = "xxxxxx"
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)
// response interceptor  響應(yīng)攔截器
service.interceptors.response.use(
  response => {
    const res = response.data
    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 200) {
      alert(res.message || 'Error')
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    console.log('err' + error) // for debug
    alert(res.message || 'Error')
    return Promise.reject(error)
  }
)
// 最后暴露我們聲明的 service 服務(wù)
export default service

4. api的封裝與使用

  • api請(qǐng)求方法,也是要做一個(gè)封裝的,封裝流程如下

4.1 在src目錄下新建api/index.js文件

文件內(nèi)容如下:

import request from '../utils/request';
//登錄接口,post方式傳參用data
export function login(data) {
  return request({
    url: '/api/login',
    method: 'post',
    data
  })
}
//獲取xx列表接口,get方式傳參用params
export function getList(params) {
  return request({
    url: '/api/getList',
    method: 'get',
    params
  })
}

4.2 使用封裝好的api

在需要的頁(yè)面,比如我們的登錄頁(yè)面需要調(diào)用登錄接口,我們就要這樣用

//首先第一步要用import導(dǎo)入進(jìn)來(lái)我們的登錄接口
import { login } from '../api/index'
//然后直接調(diào)用login方法
login({username:'admin',password:"123456"}).then(res=>{
      console.log(res);
})

以上就是vue新建環(huán)境變量以及網(wǎng)絡(luò)請(qǐng)求工具axios的二次封裝詳解的詳細(xì)內(nèi)容,更多關(guān)于vue axios封裝的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vuex新手進(jìn)階篇之取值

    vuex新手進(jìn)階篇之取值

    Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式,下面這篇文章主要給大家介紹了關(guān)于vuex新手進(jìn)階篇之取值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • vue-loader中引入模板預(yù)處理器的實(shí)現(xiàn)

    vue-loader中引入模板預(yù)處理器的實(shí)現(xiàn)

    這篇文章主要介紹了vue-loader中引入模板預(yù)處理器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue3全局掛載Dialog組件的示例代碼

    Vue3全局掛載Dialog組件的示例代碼

    Dialog通常是指在Vue.js 3.x版本中使用的對(duì)話框組件,它是一個(gè)輕量級(jí)、易集成的彈窗插件,用于創(chuàng)建通知、確認(rèn)消息、輸入表單等交互場(chǎng)景,最近項(xiàng)目中遇到了全局掛載Dialog的需求,所以本文給大家介紹了Vue3全局掛載Dialog組件的方法,需要的朋友可以參考下
    2024-12-12
  • vuex狀態(tài)持久化在vue和nuxt.js中的區(qū)別說(shuō)明

    vuex狀態(tài)持久化在vue和nuxt.js中的區(qū)別說(shuō)明

    這篇文章主要介紹了vuex狀態(tài)持久化在vue和nuxt.js中的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 如何在vue中使用pdfjs預(yù)覽pdf文件

    如何在vue中使用pdfjs預(yù)覽pdf文件

    本文主要講解了如何在vue中使用pdfjs預(yù)覽pdf文件,這樣的優(yōu)勢(shì)是無(wú)須讓用戶安裝專門的軟件即可實(shí)現(xiàn)預(yù)覽,下面就看看如何實(shí)現(xiàn)這個(gè)需求
    2021-06-06
  • ElementUI中的el-dropdown傳入多參數(shù)的實(shí)現(xiàn)方法

    ElementUI中的el-dropdown傳入多參數(shù)的實(shí)現(xiàn)方法

    本文主要介紹了ElementUI中的el-dropdown傳入多參數(shù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Vue透?jìng)鰽ttributes使用解析

    Vue透?jìng)鰽ttributes使用解析

    本文主要介紹了Vue透?jìng)鰽ttributes使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Vue3打包部署報(bào)錯(cuò)的解決方案

    Vue3打包部署報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了Vue3打包部署報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 如何在Vue.js項(xiàng)目中使用Jest進(jìn)行單元測(cè)試

    如何在Vue.js項(xiàng)目中使用Jest進(jìn)行單元測(cè)試

    在眾多測(cè)試框架中,Jest?因其易用性、強(qiáng)大功能以及與?Vue.js?的良好兼容性,成為了許多開(kāi)發(fā)者的首選,本文將詳細(xì)介紹如何在?Vue.js?項(xiàng)目中使用?Jest?進(jìn)行單元測(cè)試,需要的可以參考下
    2024-11-11
  • ant design中upload組件上傳大文件,顯示進(jìn)度條進(jìn)度的實(shí)例

    ant design中upload組件上傳大文件,顯示進(jìn)度條進(jìn)度的實(shí)例

    這篇文章主要介紹了ant design中upload組件上傳大文件,顯示進(jìn)度條進(jìn)度的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10

最新評(píng)論