前端服務配置詳解:從入門到實戰

前端服務配置詳解:從入門到實戰

一、環境配置文件(.env)

1.1 基礎結構

在項目根目錄創建 .env 文件:

# 開發環境
VUE_APP_API_BASE_URL = http://localhost:3000/api
VUE_APP_VERSION = 1.0.0# 生產環境(.env.production)
VUE_APP_API_BASE_URL = https://api.yourdomain.com

🔑 作用說明

  • VUE_APP_ 開頭的變量會被自動加載
  • 不同環境使用不同配置文件(.env.development / .env.production)
  • 敏感信息應放入 .env.local(該文件不會被Git跟蹤)

1.2 實戰技巧

// 在axios配置中使用
const baseURL = process.env.VUE_APP_API_BASE_URL;// 在代碼中獲取版本號
console.log(`當前版本:${process.env.VUE_APP_VERSION}`);

?? 注意事項

  • 修改.env文件后需要重啟服務
  • 變量名必須大寫+下劃線格式
  • 不要提交包含敏感信息的.env文件到版本庫

二、Axios全局配置

2.1 創建實例

// src/config/axios.ts
import axios from 'axios';const service = axios.create({baseURL: process.env.VUE_APP_API_BASE_URL,timeout: 10000,headers: {'Content-Type': 'application/json'}
});

2.2 請求攔截器

service.interceptors.request.use((config) => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;},(error) => {return Promise.reject(error);}
);

2.3 響應攔截器

service.interceptors.response.use((response) => {if (response.status === 200) {return response.data;}return Promise.reject(response);},(error) => {if (error.response.status === 401) {router.push('/login');}return Promise.reject(error);}
);

三、類型定義規范

3.1 請求頭類型

// src/types/headers.ts
export interface HeadersType {'Content-Type': string;Authorization?: string;'X-Request-Tag'?: string;
}export const defaultHeaders = {'Content-Type': 'application/json','X-Request-Tag': 'web-2023'
};

3.2 API響應類型

// src/types/response.ts
export interface ApiResponse<T = any> {code: number;data: T;message: string;timestamp: number;
}

四、請求方法封裝

4.1 GET請求示例

export const get = async <T>(url: string, params?: object): Promise<ApiResponse<T>> => {try {const response = await service.get(url, { params });return response.data;} catch (error) {console.error('GET請求錯誤:', error);throw error;}
};

4.2 POST請求示例

export const post = async <T>(url: string, data: object): Promise<ApiResponse<T>> => {try {const response = await service.post(url, data);return response.data;} catch (error) {console.error('POST請求錯誤:', error);throw error;}
};

五、跨域解決方案

5.1 Vue項目配置

// vue.config.js
module.exports = {devServer: {proxy: {'/api': {target: 'http://localhost:3000',changeOrigin: true,pathRewrite: {'^/api': ''}}}}
}

5.2 生產環境處理

# Nginx配置示例
location /api/ {proxy_pass http://backend-server/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;
}

六、版本控制規范

6.1 提交示例

git commit -m "feat(config): 添加axios攔截器配置
- 新增請求頭自動注入
- 添加401狀態碼處理
- 優化類型定義"

6.2 最佳實踐

  1. 配置文件變更單獨提交
  2. 提交信息使用標準前綴:
    • feat: 新增功能
    • fix: 問題修復
    • docs: 文檔更新
    • refactor: 代碼重構

總結

通過合理配置前端服務,我們可以實現:

  1. 環境隔離:開發/生產環境靈活切換
  2. 統一管理:請求配置集中維護
  3. 錯誤處理:全局異常捕獲機制
  4. 類型安全:完善的TS類型支持
  5. 可維護性:清晰的版本控制記錄

建議定期檢查配置文件,及時更新依賴版本,保持配置與業務需求的同步發展。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75933.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【學習筆記】計算機網絡(七)—— 網絡安全

第7章 網絡安全 文章目錄 第7章 網絡安全7.1 網絡安全問題概述7.1.1 計算機網絡面臨的安全性威脅7.1.2 安全的計算機網絡7.1.3 數據加密模型 7.2 兩類密碼體制7.2.1 對稱密鑰密碼體制7.2.2 公鑰密碼體制 7.3 鑒別7.3.1 報文鑒別7.3.2 實體鑒別 7.4 密鑰分配7.4.1 對稱密鑰的分配…

我用Cursor + DeepSeek + Claude-3.7-Sonnet + DevBox,10分鐘開發了一個系統

大家好&#xff0c;我是袁庭新。Cursor最近可謂是火的一塌糊涂&#xff0c;于是我深度體驗了一波。我用的環境是Cursor Claude-3.7-Sonnet DevBox&#xff0c;整個過程我一行代碼都沒有寫&#xff0c;10分鐘幫我開發了一個系統&#xff0c;且前后端聯調一把通過。驚出一身冷汗…

SpringBoot企業級開發之【用戶模塊-登錄】

開發之前我們先看一下接口文檔的要求&#xff1a; 開發思路&#xff1a; 開發實操&#xff1a; 因為我們之前開發注冊的時候&#xff0c;就有了一些相關的操作&#xff0c;所以在這里我們只需要定義登錄的controller即可&#xff1a; //用戶登錄PostMapping("/login"…

mysql 8.0.27-docker

安裝 可以略過本步 https://dev.mysql.com/downloads/https://dev.mysql.com/downloads/ 鏡像查詢與安裝 先查詢&#xff1a; docker search mysql 明顯會報錯 Error response from daemon: Get "https://index.docker.io/v1/search?qmysql&n25": dial tcp…

Pgvector的安裝

Pgvector的安裝 向量化數據的存儲&#xff0c;可以為 PostgreSQL 安裝 vector 擴展來存儲向量化數據 注意&#xff1a;在安裝vector擴展之前&#xff0c;請先安裝Postgres數據庫 vector 擴展的步驟 1、下載vs_BuildTools 下載地址&#xff1a; https://visualstudio.microso…

Python高階函數-sorted(深度解析從原理到實戰)

一、sorted()函數概述 sorted()是Python內置的高階函數&#xff0c;用于對可迭代對象進行排序操作。與列表的sort()方法不同&#xff0c;sorted()會返回一個新的已排序列表&#xff0c;而不改變原數據。 基本語法 sorted(iterable, *, keyNone, reverseFalse)二、核心參數詳…

ArcGIS Pro/GeoScene Pro AI 助手 2.1

引言 面對ArcGIS Pro/GeoScene Pro復雜的操作界面和腳本開發需求&#xff0c;你是否還在為功能定位、代碼調試和效率優化而煩惱&#xff1f;今天&#xff0c;推出自制的Pro AI助手2.0版本&#xff0c;七大核心功能將革新你的GIS工作方式&#xff01;無論是界面操作指引、一鍵生…

如何將本地更改的README文件同步到自己的GitHub項目倉庫

如何將本地更改的 README 文件同步到 GitHub 倉庫 在你 git clone 下來的工程目錄下&#xff1a; 先使用 robocopy YOUR\SOURCE\CODE\DIR YOUR\GIT\CLONE\DIR /E /XD .git /DCOPY:T 將你的更改Copy到你git下來的工程中&#xff08;上面的命令會自動處理&#xff0c;例如只會C…

PostIn V1.0.8版本發布,IDEA 插件支持一鍵掃描上報,讓接口定義不再繁瑣

PostIn是一款國產開源免費的接口管理工具&#xff0c;包含項目管理、接口調試、接口文檔設計、接口數據MOCK等模塊&#xff0c;支持常見的HTTP協議、websocket協議等&#xff0c;支持免登陸本地接口調試&#xff0c;同時可以對項目進行靈活的成員權限、消息通知管理等。本周Pos…

UE5學習筆記 FPS游戲制作36 UI動畫

文章目錄 目的效果創建動畫UI準備制作動畫 播放動畫目的效果創建動畫UI準備制作動畫 播放動畫注冊播放事件 目的效果 我們要創建一個提示動畫&#xff0c;文字先漸顯&#xff0c;然后向上移動&#xff0c;同時漸隱 創建動畫 UI準備 創建一個UI控件&#xff0c;然后創建一個…

HTTP 響應頭 Strict-Transport-Security 缺失漏洞

HTTP 響應頭 Strict-Transport-Security 缺失漏洞 這個漏洞就是說明網站的HTTP響應頭中沒有設置Strict-Transport-Security&#xff0c;沒有設置則可以通過將https自己手動改成htttp的方式進行訪問。不安全 解決方法 1.nginx配置 nginx中增加如下配置&#xff1a; location / …

代理模式的優缺點是什么?

什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它通過創建代理對象來控制對原始對象的訪問。 這種模式在前端開發中廣泛應用&#xff0c;特別是在需要控制對象訪問、添加額外邏輯或優化性能的場景中。 ??核心…

【嵌入式學習3】UDP發送端、接收端

目錄 1、發送端 2、接收端 3、UDP廣播 1、發送端 from socket import *udp_socket socket(AF_INET,SOCK_DGRAM) udp_socket.bind(("127.0.0.1",3333))data_str "UDP發送端數據" data_bytes data_str.encode("utf-8") udp_socket.sendto(d…

AI重構SEO關鍵詞精準布局

內容概要 在傳統SEO策略面臨搜索場景碎片化、用戶意圖復雜化的挑戰下&#xff0c;AI技術通過多維數據分析與算法建模&#xff0c;正在重構關鍵詞布局的邏輯框架。基于自然語言處理&#xff08;NLP&#xff09;的語義分析能力&#xff0c;AI可精準識別搜索詞背后的需求層級&…

谷歌發布網絡安全AI新模型Sec-Gemini v1

谷歌近日宣布推出實驗性AI模型Sec-Gemini v1&#xff0c;旨在通過人工智能技術革新網絡安全防御體系。該模型由Sec-Gemini團隊成員Elie Burzstein和Marianna Tishchenko共同研發&#xff0c;旨在幫助網絡安全人員應對日益復雜的網絡威脅。 攻防不對稱的破局之道 Sec-Gemini團隊…

IntelliJ IDEA下開發FPGA——FPGA開發體驗提升__下

前言 由于Quartus寫代碼比較費勁&#xff0c;雖然新版已經有了代碼補全&#xff0c;但體驗上還有所欠缺。于是使用VS Code開發&#xff0c;效果如下所示&#xff0c;代碼樣式和基本的代碼補全已經可以滿足開發&#xff0c;其余工作則交由Quartus完成 但VS Code的自帶的git功能&…

Python語言的需求分析

Python語言的需求分析 引言 在信息技術快速發展的今天&#xff0c;編程語言的選擇對于軟件開發的成功與否起著至關重要的作用。Python作為一種高級編程語言&#xff0c;以其簡潔易讀的語法和強大的功能受到越來越多開發者的青睞。通過對Python語言的需求分析&#xff0c;我們…

抓wifi無線空口包之Ubuntu抓包(二)

一、設置網卡信道和頻段&#xff0c;并抓包 1、使用iwconfig查看自己機器的無線網卡名稱 wangwang-ThinkCentre-M930t-N000:~$ iwconfig lo no wireless extensions. eno1 no wireless extensions. enxc8a3624ab329 no wireless extensions. wlx90de80d1b5b1 IE…

深度學習實戰電力設備缺陷檢測

本文采用YOLOv11作為核心算法框架&#xff0c;結合PyQt5構建用戶界面&#xff0c;使用Python3進行開發。YOLOv11以其高效的實時檢測能力&#xff0c;在多個目標檢測任務中展現出卓越性能。本研究針對電力設備缺陷數據集進行訓練和優化&#xff0c;該數據集包含豐富的電力設備缺…

Day1:前端項目uni-app壁紙實戰

uni-app官網下載HBuilder。 uni-app快速上手 | uni-app官網 點擊HBuilder 安裝 新建項目 工具——插件安裝 安裝uni-app&#xff08;vue3&#xff09; 我們先來準備一下&#xff1a; 先在wallpaper下新建目錄 我已經建過了 同樣&#xff0c;再在common下建images和style目錄&…