vue 项目中常用的 2 个 Ajax 库及简单使用示例

 更新时间:2025年06月11日 09:21:35   作者:難釋懷  
Ajax是一种在不重新加载整个页面的情况下,通过 JavaScript 与服务器进行异步通信的技术,这篇文章主要介绍了vue项目中常用的2 个 Ajax库,需要的朋友可以参考下

一、前言

在 Vue 项目的开发过程中,前端通常需要与后端 API 进行数据交互。为了实现异步请求(Ajax),我们常常会使用一些网络请求库来简化开发流程并提升代码的可维护性。

目前在 Vue 项目中,最常用且推荐的两个 Ajax 请求方案是:

  • axios:功能强大、支持 Promise 接口、自动转换 JSON 数据、支持拦截器等;
  • 原生 fetch API:浏览器内置,无需引入额外依赖,简洁现代;

本文将带你深入了解这两个库的基本用法、优缺点对比以及在 Vue 中的实际应用场景,帮助你根据项目需求选择合适的网络请求方式。

二、为什么需要 Ajax 请求?

Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个页面的情况下,通过 JavaScript 与服务器进行异步通信的技术。

在 Vue 中,常见的 Ajax 使用场景包括:

场景示例
获取数据向后端接口请求用户列表、商品信息等
提交表单用户填写完表单后提交到服务端
登录认证发送用户名密码获取 Token
文件上传上传图片、文档等文件
错误处理网络异常或接口错误提示

三、Axios 简介与使用示例

✅ Axios 是什么?

Axios 是一个基于 Promise 的 HTTP 客户端,适用于浏览器和 Node.js 环境。它功能丰富,易于集成进 Vue 项目中,是目前最流行的 Ajax 请求库之一。

🔧 安装 Axios

npm install axios

📌 基本使用(GET / POST)

GET 请求示例:

import axios from 'axios'
axios.get('https://api.example.com/users')
  .then(response => {
    console.log('用户列表:', response.data)
  })
  .catch(error => {
    console.error('请求失败:', error)
  })

POST 请求示例:

axios.post('https://api.example.com/login', {
  username: 'admin',
  password: '123456'
})
.then(res => {
  console.log('登录成功:', res.data)
})
.catch(err => {
  console.error('登录失败:', err)
})

🧩 支持的功能亮点:

功能描述
自动转换 JSON请求/响应自动序列化和反序列化
拦截器可以统一处理请求头、响应体
取消请求支持取消未完成的请求
浏览器兼容性好兼容主流浏览器及 IE 11+
支持 TypeScript类型友好,便于开发大型项目

四、Fetch API 简介与使用示例

✅ Fetch 是什么?

fetch() 是现代浏览器内置的用于发起网络请求的 API,它返回一个 Promise,语法简洁,是原生替代 jQuery.ajax() 的现代方案。

⚠️ 注意:Fetch 不支持 IE,如需兼容旧浏览器,请使用 Polyfill 或改用 Axios。

📌 基本使用(GET / POST)

GET 请求示例:

fetch('https://api.example.com/users')
  .then(response => response.json())
  .then(data => {
    console.log('用户列表:', data)
  })
  .catch(err => {
    console.error('请求失败:', err)
  })

POST 请求示例:

fetch('https://api.example.com/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    username: 'admin',
    password: '123456'
  })
})
.then(response => response.json())
.then(data => {
  console.log('登录成功:', data)
})
.catch(err => {
  console.error('登录失败:', err)
})

🧩 优点:

特点描述
原生支持不需要安装额外库
简洁易用语法简单,符合现代 JS 风格
可配合 Service Worker 使用更好的 PWA 支持

❗ 缺点:

缺点说明
不支持拦截器无法统一处理请求/响应逻辑
默认不带 Cookie需要手动配置 credentials: 'include'
不支持取消请求需要借助 AbortController 实现
错误处理较麻烦需要手动判断 response.ok

五、Axios vs Fetch 对比总结

缺点说明
不支持拦截器无法统一处理请求/响应逻辑
默认不带 Cookie需要手动配置 credentials: 'include'
不支持取消请求需要借助 AbortController 实现
错误处理较麻烦需要手动判断 response.ok

📌 通俗理解:

  • Axios:像“瑞士军刀”,功能多、灵活、适合复杂项目;
  • Fetch:像“便携小刀”,轻量、原生、适合小型项目或快速原型。

六、在 Vue 中如何封装请求库(以 Axios 为例)

✅ 步骤 1:创建 utils/request.js

// utils/request.js
import axios from 'axios'
const service = axios.create({
  baseURL: '/api', // 所有请求默认添加 /api 前缀
  timeout: 5000,  // 超时时间
})
// 请求拦截器
service.interceptors.request.use(config => {
  // 可在此添加 token、loading 等操作
  return config
}, error => {
  return Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(response => {
  // 统一处理响应数据
  return response.data
}, error => {
  // 统一错误提示
  console.error('请求出错:', error)
  return Promise.reject(error)
})
export default service

✅ 步骤 2:组件中调用封装好的方法

import request from '@/utils/request'
export default {
  methods: {
    async fetchUsers() {
      try {
        const users = await request.get('/users')
        console.log('用户数据:', users)
      } catch (err) {
        alert('获取用户失败')
      }
    }
  }
}

七、结语

到此这篇关于vue 项目中常用的 2 个 Ajax 库的文章就介绍到这了,更多相关vue ajax库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • axios全局请求参数设置,请求及返回拦截器的方法

    axios全局请求参数设置,请求及返回拦截器的方法

    下面小编就为大家分享一篇axios全局请求参数设置,请求及返回拦截器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue实现push数组并删除的例子

    Vue实现push数组并删除的例子

    今天小编就为大家分享一篇Vue实现push数组并删除的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue配置文件自动生成路由和菜单实例代码

    vue配置文件自动生成路由和菜单实例代码

    因为不同的用户有不同的权限,能访问的页面是不一样的,所以我们在写后台管理系统时就会遇过这样的需求:根据后台数据动态添加路由和菜单,这篇文章主要给大家介绍了关于vue配置文件自动生成路由和菜单的相关资料,需要的朋友可以参考下
    2021-08-08
  • iview-table组件嵌套input select数据无法双向绑定解决

    iview-table组件嵌套input select数据无法双向绑定解决

    这篇文章主要为大家介绍了iview-table组件嵌套input select数据无法双向绑定解决示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)

    Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)

    这篇文章主要介绍了Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定),非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11
  • vue表格n-form中自定义增加必填星号的实现代码

    vue表格n-form中自定义增加必填星号的实现代码

    这篇文章主要介绍了vue表格n-form中自定义增加必填星号,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • Vue2升级到Vue3的教程及避坑指南

    Vue2升级到Vue3的教程及避坑指南

    随着Vue3的日益成熟,越来越多的团队开始考虑将现有Vue2项目升级到Vue3,作为一次重大版本更新,Vue3在带来性能提升和新特性的同时,也引入了一些不兼容的变化,本文将全面解析Vue2到Vue3升级过程中需要注意的关键点,帮助你顺利完成迁移,需要的朋友可以参考下
    2025-04-04
  • 脚手架vue-cli工程webpack的作用和特点

    脚手架vue-cli工程webpack的作用和特点

    webpack是一个模块打包的工具,它的作用是把互相依赖的模块处理成静态资源。这篇文章主要介绍了vue-cli工程webpack的作用和特点,需要的朋友可以参考下
    2018-09-09
  • vue3组件化开发常用API知识点总结

    vue3组件化开发常用API知识点总结

    Vue是目前Web前端最流行的开发框架技术, 下面这篇文章主要给大家介绍了关于vue3组件化开发常用API的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 基于vue2框架的机器人自动回复mini-project实例代码

    基于vue2框架的机器人自动回复mini-project实例代码

    本篇文章主要介绍了基于vue2框架的机器人自动回复mini-project实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-06-06

最新评论