当前位置: 首页 > news >正文

Vue 3 + Axios 完整入门实战指南

从入门到深入,手把手教你在 Vue 3 中正确使用 Axios,支持全局挂载、局部分离、使用 proxy 连接场景,适合所有前端小白和实战设计。

大家好,我是石小石!一个热爱技术分享的开源社区贡献者,小册《油猴脚本实战指南》作者、CSDN专栏《Vite极速入门通关教程》作者。


一、安装 Axios

npm install axios

二、Vue 3 中将 Axios 全局挂载

Vue 3 不再支持 Vue 2 中的 Vue.prototype 方式,而是通过 app.config.globalProperties 来达到相同效果:

全局挂载

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'const app = createApp(App)
app.config.globalProperties.$http = axiosapp.use(router).mount("#app")

三、在组件中使用 Axios

使用 getCurrentInstance 获取当前实例 (dev-only)

import { getCurrentInstance, onMounted } from 'vue'export default {setup() {const { ctx } = getCurrentInstance();onMounted(() => {ctx.$http.get('/api/user').then(res => console.log(res));});}
};

使用 proxy 替代 ctx (推荐)

import { getCurrentInstance, onMounted } from 'vue'export default {setup() {const { proxy } = getCurrentInstance();onMounted(() => {proxy.$http.get('/api/user').then(res => console.log(res));});}
};

应对环境错误:ctx 在打包后无法访问 globalProperties,需要使用 proxy 替代。


四、局部引入 + 分类使用

创建 /proxy/index.js

// proxy/index.js
import axios from 'axios';const getList = (url) => axios.get(url);export default {getList
};

在组件中使用

import axiosProxy from '../proxy';axiosProxy.getList('/api/todoList/list').then(res => {console.log(res.data);
});

五、Axios 基础用法

GET 请求

axios.get('/user?id=12345').then(res => console.log(res)).catch(err => console.error(err));

POST 请求

axios.post('/user', {firstName: 'Fred',lastName: 'Flintstone'
}).then(res => console.log(res));

六、通用 config 配置

axios({method: 'post',url: '/user',data: {firstName: 'Fred'},timeout: 1000,headers: {'X-Requested-With': 'XMLHttpRequest'}
});

常用 config 项目概览

项目说明
url请求地址
method方法 (get/post)
baseURL基础路径
headers请求头
paramsurl 取值参数
data请求体数据 (post 用)
timeout超时时间

七、定义全局默认配置

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = 'Bearer token';
axios.defaults.timeout = 5000;

八、自定义实例 + 拦截器

定义一个独立实例

const instance = axios.create({baseURL: '/api',timeout: 10000,
});

拦截器

instance.interceptors.request.use(config => {// 添加公共 tokenconfig.headers.Authorization = 'Bearer your_token';return config;
}, error => Promise.reject(error));instance.interceptors.response.use(response => {return response.data; // 简化接口结果
}, error => Promise.reject(error));

九、返回结构

Axios 的响应包括如下结构:

{data: {},         // 接口返回数据status: 200,     // HTTP 状态码statusText: 'OK',headers: {},config: {},      // 当前配置request: {}      // XMLHttpRequest 对象
}

实际使用

axios.get('/user/12345').then(res => {console.log(res.data);
});

十、推荐扩展

  • 把 axios 包装成 hooks
  • 封装连接失败提示 / 热更新负载
  • 通过 provide/inject 分类控制 API 请求成本

总结

Vue 3 + Axios 是最常用的前后端通讯配置,重点是「全局 globalProperties 挂载 + proxy 替代 this + 分类 request」,这是一套无需完全依赖 UI 框架的经典组合技术路线,非常适合工程化开发和小组件开发。

关于我

最近在学习油猴脚本开发,写了很多有趣的脚本:

  • 接口拦截工具:修改CSDN博客数据接口返回值

  • Vue路由一键切换:开发效率起飞

  • 任意元素双击实现画中画:摸鱼超级助手

  • 掘金后台自动签到助手

  • 解除文本复制、网页复制、一键下载为MD

  • 主题切换助手

如果你对油猴脚本开发也感兴趣,可以参考我的油猴脚本开发教程

http://www.lqws.cn/news/462439.html

相关文章:

  • Docker学习笔记:DockerFile
  • XCVU47P-2FSVH2892E Xilinx Virtex UltraScale+ FPGA AMD
  • 解锁K-近邻算法:数据挖掘的秘密武器
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 04(题目+回答)
  • Python 数据分析与可视化 Day 3 - Pandas 数据筛选与排序操作
  • 当数据自己会说话:聚类与分类算法全景解析
  • 大模型在急性弥漫性腹膜炎预测及治疗方案制定中的应用研究
  • springboot口腔管理平台
  • CSS 动画:深入解析与高效实践
  • cursor中定义cursor rules
  • 【入门】【例18.2】 孔融让梨
  • 华为云Flexus+DeepSeek征文 | 基于Flexus X实例的金融AI Agent开发:智能风控与交易决策系统
  • 《Effective Python》第九章 并发与并行——使用 concurrent.futures 实现真正的并行化
  • shell脚本--条件
  • 互联网大厂Java求职面试:AI与大模型技术下的RAG系统架构设计与性能优化
  • 天若 OCR效率工具F4 截图秒识别,多语言混合文本准确率高离线识别保隐私
  • SpringBoot电脑商城项目--显示购物车列表
  • 基于ARM ubuntu如何进行交叉编译
  • RA4M2开发IOT(0)----安装e² studio
  • 【 CVPR2025】计算机视觉|CEM : 模型逆向工程?条件熵最大化来啦!
  • 【设计模式】4.代理模式
  • 如何优化HarmonyOS 5的分布式通信性能?
  • 专业APP定制开发方案详解
  • 【网络产品经营】园区网络
  • Qt Library库系列----Serial串口
  • vue3+arcgisAPI4案例:智慧林业资源监测分析平台(附源码下载)
  • 闲庭信步使用SV进行图像处理系列教程介绍
  • Qt、C++自定义按钮、组件、事件编程开发练习,万字实战解析!!
  • Django中为api自定义一些装饰器:如参数校验等
  • GIFPlayer 使用指南:创建可调速的 GIF 播放器