国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端vue3分享——項目封裝axios、vite使用env環(huán)境變量

這篇具有很好參考價值的文章主要介紹了前端vue3分享——項目封裝axios、vite使用env環(huán)境變量。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


vue3封裝axios,web站點,前端,javascript,vue3

?前言

大家好,我是yma16,本文分享關(guān)于前端vue3分享——項目封裝axios、使用env環(huán)境變量。
該系列往期文章:
csdn新星計劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板
認(rèn)識vite_vue3 初始化項目到打包
什么是axios

axios是一個流行的JavaScript庫,用于在瀏覽器和Node.js環(huán)境中進(jìn)行HTTP請求。下面是axios的原理:
Axios是基于Promise構(gòu)建的,它可以使用async/await,因此在發(fā)出請求時,返回的是一個Promise對象。這個Promise對象中包含了請求成功和請求失敗的回調(diào)函數(shù)。
Axios發(fā)送的請求被封裝成一個請求對象。請求對象包括請求url、請求方法、請求頭、請求數(shù)據(jù)等信息。在創(chuàng)建這個請求對象時,可以設(shè)置全局的默認(rèn)值,這些默認(rèn)值可以用于所有請求。
Axios是通過XMLHttpRequest對象來實現(xiàn)請求的。在瀏覽器中,XMLHttpRequest是通過ActiveXObject對象創(chuàng)建的。在Node.js中,它使用http或https模塊來實現(xiàn)請求。
Axios可以進(jìn)行攔截器的設(shè)置,它提供了全局請求攔截器和全局響應(yīng)攔截器。這些攔截器可以用于在請求或響應(yīng)之前進(jìn)行一些處理,比如添加請求頭或?qū)憫?yīng)進(jìn)行一些處理。
Axios還提供了取消請求的功能。這個功能是通過一個CancelToken對象來實現(xiàn)的。使用這個對象可以在發(fā)送請求后取消這個請求。這對于用戶取消請求或者在組件銷毀時取消請求非常有用。
Axios提供了一些高級功能,比如支持請求和響應(yīng)的轉(zhuǎn)換、自動處理不同數(shù)據(jù)格式(如JSON、FormData、Binary等)以及在Node.js中處理代理等。

vite處理環(huán)境變量

Vite 的工作原理主要分為兩部分:開發(fā)時編譯和生產(chǎn)時打包。在開發(fā)時,Vite 利用 ES Modules 特性實現(xiàn)了單文件組件快速編譯和熱更新。在生產(chǎn)時,Vite 利用 Rollup 進(jìn)行打包,生成靜態(tài)文件。
在開發(fā)模式下,Vite 會通過一個簡單的 HTTP 服務(wù)器來服務(wù)于應(yīng)用程序。當(dāng)瀏覽器請求應(yīng)用程序時,Vite 會查找所有的入口文件,并生成一個映射表,把每個文件的依賴關(guān)系記錄下來。當(dāng)應(yīng)用程序需要加載某個模塊時,Vite 會首先解析該模塊的依賴,并根據(jù)依賴關(guān)系加載其他模塊。在加載過程中,Vite 會利用瀏覽器的緩存機(jī)制,以及服務(wù)端的緩存機(jī)制來優(yōu)化加載速度。
對于環(huán)境變量的處理,Vite 的原理是通過對項目中 import.meta 對象的支持來實現(xiàn)的。import.meta 對象提供了當(dāng)前模塊的元數(shù)據(jù)信息,包括模塊的 URL 和環(huán)境變量等信息。在 Vite 中,用戶可以在 vite.config.js 配置文件中設(shè)置環(huán)境變量,然后通過 import.meta.env 對象來訪問這些變量,從而動態(tài)地讀取環(huán)境變量。在打包時,Vite 會自動將這些環(huán)境變量編譯到生成的靜態(tài)文件中,從而實現(xiàn)在生產(chǎn)環(huán)境中使用環(huán)境變量的功能。

?vue3封裝統(tǒng)一的axios請求

官方文檔:https://www.axios-http.cn/docs/interceptors
封裝一個簡單的axios,在每次請求的請求頭都加上 headers: {'X-Custom-Header': 'yma16'}

?? 請求攔截器

http.ts

import axios from "axios";

// 實例
const createInstance = (baseURL:string)=>{
    return axios.create({
        baseURL:baseURL,
        timeout: 1000,
        headers: {'X-Custom-Header': 'yma16'}
    })
};

// @ts-ignore
const http:any=createInstance('');


// 添加請求攔截器
http.interceptors.request.use(function (config:any) {
    // 在發(fā)送請求之前做些什么
    return config;
}, function (error:any) {
    // 對請求錯誤做些什么
    return Promise.reject(error);
});

// 添加響應(yīng)攔截器
http.interceptors.response.use(function (response:any) {
    // 2xx 范圍內(nèi)的狀態(tài)碼都會觸發(fā)該函數(shù)。
    // 對響應(yīng)數(shù)據(jù)做點什么
    return response;
}, function (error:any) {
    // 超出 2xx 范圍的狀態(tài)碼都會觸發(fā)該函數(shù)。
    // 對響應(yīng)錯誤做點什么
    return Promise.reject(error);
});

export {http};

在api調(diào)用的時候引入http
這是登錄的api

import {http} from "../..//http/index";

export const loginUser: any = (params: any) => {
  return http.post("/cloudApi/user/login", params);
};

export const registerUser: any = (params: any) => {
  return http.post("/cloudApi/user/register", params);
};

登錄查看請求頭出現(xiàn)X-Custom-Header:yma16
vue3封裝axios,web站點,前端,javascript,vue3

?vue3使用env環(huán)境變量

?? vite env變量規(guī)則

變量規(guī)則
以 VITE_ 為前綴的變量才會暴露給經(jīng)過 vite 處理的代碼
在.env 定義

VITE_APP_HOST= http://localhost:9090/

在.env.development定義

VITE_APP_HOST= http://localhost:9090/

在.env.production定義

VITE_APP_HOST= https://yongma16.xyz/back-front/

使用import.meta調(diào)用env環(huán)境變量
在util工具目錄下編寫一個全局獲取變量的方法globalEnv

export const globalEnv=()=>{
    return import.meta.env
};

?? vite.config獲取env參數(shù)

vite.config獲取env參數(shù)使用oadEnv
process.cwd() 可以獲取當(dāng)前路徑
vite開發(fā)環(huán)境代理切換
mode參數(shù)為config參數(shù)的模式
vue3封裝axios,web站點,前端,javascript,vue3
mode 本運(yùn)行為development
vue3封裝axios,web站點,前端,javascript,vue3

修改vite.config.ts

import { defineConfig,loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
// @ts-ignore
import { resolve } from "path";
// @ts-ignore
import Components from "unplugin-vue-components/vite";
// @ts-ignore
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";

// https://vitejs.dev/config/
export default defineConfig(({mode})=>{
  // 運(yùn)行模式
  console.log('mode',mode)
  // 當(dāng)前路徑
  console.log('process.cwd()',process.cwd())
  // @ts-ignore
  const env=loadEnv(mode,process.cwd())
  console.log('env',env)
  const proxy={
    "^/cloudApi/": {
      target: env.VITE_APP_HOST,
      changeOrigin: true,
      ws: true,
      rewrite: (path) => path.replace(/^\/cloudApi/, ""),
    },
  };

  return {
    // 打包相對路徑
    base: './',
    server: {
      port: 3000,
      open: true,
      cors: true,
      proxy: {
        ...proxy
      },
    },
    "css": {
      preprocessorOptions: {
        less: {
          javascriptEnabled: true,
          patterns: [resolve(__dirname, "./src/style/main.less")],
        },
      },
    },
    resolve: {
      alias: {
        "@": resolve(__dirname, "src"),
      },
    },
    plugins: [
      vue(),
      Components({
        resolvers: [AntDesignVueResolver()],
      }),
    ],
  }
});

?總結(jié)

項目封裝axios、vite使用env環(huán)境變量主要是統(tǒng)一代碼規(guī)范,便于開發(fā)且后續(xù)好維護(hù)。

?? 編碼sliod原則

SOLID 原則是一種設(shè)計原則,用于指導(dǎo)編寫可維護(hù)、可擴(kuò)展、易于理解和可復(fù)用的代碼。

  • 單一職責(zé)原則 (Single Responsibility Principle, SRP): 一個類或模塊只負(fù)責(zé)一項職責(zé),降低耦合度。

  • 開閉原則 (Open/Closed Principle, OCP): 類和模塊應(yīng)該對擴(kuò)展開放,對修改關(guān)閉,通過抽象化來實現(xiàn)。

  • 里氏替換原則 (Liskov Substitution Principle, LSP): 子類應(yīng)該可以替換父類并且仍能正常運(yùn)行。

  • 接口隔離原則 (Interface Segregation Principle, ISP): 不應(yīng)該強(qiáng)迫使用者依賴于他們不需要的接口。

  • 依賴反轉(zhuǎn)原則 (Dependency Inversion Principle, DIP): 抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。

這些原則可以幫助開發(fā)者設(shè)計出高質(zhì)量的面向?qū)ο蟠a,并促進(jìn)代碼的可維護(hù)性和可擴(kuò)展性,提高代碼的復(fù)用度。

?結(jié)束

本文分享到這結(jié)束,如有錯誤或者不足之處歡迎指出!
vue3封裝axios,web站點,前端,javascript,vue3

?? 點贊,是我創(chuàng)作的動力!
?? 收藏,是我努力的方向!
?? 評論,是我進(jìn)步的財富!
?? 感謝你的閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-725135.html

到了這里,關(guān)于前端vue3分享——項目封裝axios、vite使用env環(huán)境變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 記:vite3+vue3+axios前端項目跨域問題解決【前端和服務(wù)器nginx配置】

    前言:什么是跨域,網(wǎng)上一搜一大把,所以這里直接跳過,直入主題。 處理方式:不通過后端處理跨域,通過前端+服務(wù)器nginx處理。 1.前端涉及處理跨域的必要配置(開發(fā)環(huán)境、生產(chǎn)環(huán)境):vite3、vue3、axios 2.服務(wù)器涉及處理跨域的配置(生產(chǎn)環(huán)境):nginx【主要用到其配置

    2024年02月01日
    瀏覽(101)
  • axios封裝—vue3項目

    前言 axios的API很友好,可以在項目中直接使用。但是在大型項目中,http請求很多,且需要區(qū)分環(huán)境, 每個網(wǎng)絡(luò)請求有相似需要處理的部分,會導(dǎo)致代碼冗余,破壞工程的可維護(hù)性,擴(kuò)展性,所以需要對axios請求進(jìn)行相應(yīng)的封裝 正文 安裝axios 封裝請求api 1. 在src目錄下新建個

    2024年02月07日
    瀏覽(391)
  • vue3+vite中使用環(huán)境變量 .env 的一些配置情況說明

    在項目文件中新建文件.env .env.pro 兩個文件其中.env 是默認(rèn)設(shè)置 .env.pro 為正式環(huán)境設(shè)置 1、設(shè)置.env中的內(nèi)容信息 注意vue3+vite 必須使用VITE開頭的配置信息 否則無法獲取 如果不想使用VITE開頭自己修改就在vite.config.ts文件中添加envPrefix:“APP_” 2、在 vite 中使用環(huán)境變量,可以用

    2024年02月04日
    瀏覽(100)
  • vue3初始搭建項目完整教程 vue3 + vite + element-ui + axios

    vue3初始搭建項目完整教程 vue3 + vite + element-ui + axios

    1. 安裝 2. 創(chuàng)建目錄 3. 在router下新增index.js 4.修改main.ts 1. 新增文件夾 2. 新增Home.vue和About.vue 1. 修改app.vue 1.unplugin-auto-import 2. 在vite.config.js中引入 1.安裝element-ui 2. 按需導(dǎo)入 3.在vite.config.js新增插件 4.測試是否引入成功 5.如果報錯 1. 網(wǎng)上下載reset.css 2.在assets中新增css文件夾 3.將

    2024年02月16日
    瀏覽(56)
  • Vue3創(chuàng)建項目(四)axios封裝及接口配置

    Vue3創(chuàng)建項目(四)axios封裝及接口配置

    項目結(jié)構(gòu):? 目錄 ???????index.ts ????????api.ts 看完需要預(yù)計花費10分鐘。 請求攔截器與響應(yīng)攔截器? 閱讀下面代碼需先了解以下內(nèi)容: ? ? ????請求攔截器: ? ? 請求攔截器的作用是在請求發(fā)送前進(jìn)行一些操作,例如在每個請求體里加上token,每次請求攜帶token傳給

    2024年02月03日
    瀏覽(90)
  • vue3+ts+vite項目引入echarts,vue3項目echarts組件封裝

    vue3+ts+vite項目引入echarts,vue3項目echarts組件封裝

    技術(shù)棧 :Vue3 + Ts + Vite + Echarts 簡介 : 圖文詳解,教你如何在 Vue3 項目中 引入Echarts , 封裝Echarts組件 ,并實現(xiàn)常用Echarts圖例 1.1 靜態(tài)效果 1.2 動態(tài)效果 2.1 安裝 Echarts npm: pnpm: 2.2 main.ts 中引入 2.3 Echarts 組件封裝 /src/components/ReEcharts/index.vue 文件中寫入如下代碼 3.1 柱狀圖 實現(xiàn)

    2024年02月09日
    瀏覽(33)
  • vue3【使用axios并封裝axios請求】

    vue3【使用axios并封裝axios請求】

    第一步:安裝axios 第二步:編寫請求文件 新建request.js 簡單的axios封裝,里面相關(guān)提示信息,自己可以引入element-plus去添加

    2024年02月04日
    瀏覽(88)
  • 個人博客-SpringBoot+Vue3項目實戰(zhàn)(6)- 二次封裝Axios

    個人博客-SpringBoot+Vue3項目實戰(zhàn)(6)- 二次封裝Axios

    在上文中,我們封裝了統(tǒng)一的后端數(shù)據(jù)返回結(jié)果,有了標(biāo)準(zhǔn)化的接口數(shù)據(jù),我們就可以針對它,在前端發(fā)送接收時,進(jìn)行預(yù)處理。 通常在一個企業(yè)級或者個人開源的項目中, Axios 會被二次封裝。 二次封裝的好處有哪些呢? 統(tǒng)一 url 配置 統(tǒng)一 api 請求 request (請求)攔截器,例

    2024年02月06日
    瀏覽(95)
  • vite + vue3 + vue-router4 + ts + element plus + pinia + axios構(gòu)建項目

    最后是完整的vite.config.ts、main.ts配置 1、先用vite創(chuàng)建一個項目 2、安裝element plus vite.config.ts配置組件按需導(dǎo)入,圖標(biāo)自動導(dǎo)入 ? main.ts配置 頁面文件使用 3、安裝axios main.ts 4、安裝pinia /stores/index.ts /stores/counter.ts main.ts 頁面使用 5、安裝router4 /router/index main.ts ? 6、vite.config.ts常

    2023年04月25日
    瀏覽(28)
  • 1.vue3+vite開發(fā)中axios使用及跨域問題解決

    一、跨域問題解決 ?1.基于vite+vue3配置時,在vite.congig.js文件server項目中添加 proxy代理 ? 文件名:vite.congig.js 2.axios封裝時設(shè)置基本路徑baseURL 二、provide/inject 實現(xiàn)axios 全區(qū)使用 ? 在main.js中provide ? ?app.provide(\\\'axios\\\', axios) ? 在組件內(nèi)獲取 ? import { inject } from \\\'vue\\\' ? const axios = i

    2024年02月12日
    瀏覽(233)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包