Axios 介绍 Vue

本文介绍了axios,它是基于Promise用于浏览器和node.js的HTTP客户端,可发送ajax请求,是前端流行的ajax请求库。阐述了其特点,如基于Promise、支持多端、支持拦截器等。还提及了安装axios工具以及封装axios来发送请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

axios 是什么

  1. axios 是请求后台资源的模块
  2. axios是一个基于Promise用于浏览器和node.js的HTTP客户端,可以用来发送ajax请求;
  3. axios 是前端流行的 ajax 请求库(react/Vue官方都推荐使用axios发ajax请求)

axios官网:Axios 中文网

axios的特点

  1. 基于Promise的异步ajax请求库
  2. 浏览器端/node端都可以使用
  3. 支持请求/响应拦截器
  4. 支持请求取消
  5. 批量发送多个请求
  6. 自动转换 JSON 数据
  7. 客户端支持防御 XSRF

使用

安装axios
首先,我们先安装axios工具,如下

  npm i axios --save

封装axios

import axios from 'axios'//引入 axios
/**
 * 封装ajax
 * @param {string} url 请求地址
 * @param {object} data 请求要携带的数据
 * @param {string} method 请求方法
 * @returns {promise} promise
 */
function ajax(url = '', data = {}, method = 'GET') {
    // 封装一个ajax方法,在内部使用axios发送请求
    // 可以传发请求时的方法,地址,数据data
    return new Promise(function(resolve, reject) {
        // 为了能够先执行axios的promise,先把axios的promise存一下,执行后,再把结果抛出
        let promise
            // 先判断要发get,还是post请求
        if (method === 'GET') {
            // 如果要发送get, 还携带了数据, 就把数据加在地址后面
            let dataStr = ''
                //keys 获取对象for in 转换成数组
                // forEac 遍历数组
            Object.keys(data).forEach(key => {
                    dataStr += `${key}=${data[key]}&`
                })
                // 如果data为空呢, 不为空的时候,说明有数据,加到url后面
            if (dataStr !== '') {
                // 截取掉最后一个&
                //substring 转化成字符串
                //   lastIndexOf获取()匹配的下标
                dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
                url += `?${dataStr}`
            }
            promise = axios.get(url)
        } else {
            // 如果到这里,说明方法为post
            promise = axios.post(url, data)
        }

        promise
            .then(response => {
                resolve(response.data)
            })
            .catch(error => {
                reject(error)
            })
    })
}

export default ajax

发送请求

import ajax from './ajax'
const url = '/api'
export const reqUserInfo = () => ajax(url + '/userinfo')
<think>好的,用户想了解axios是否属于Vue,以及它们之间的关系。首先,我需要明确axios本身的性质。axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js,它本身是独立的库,并不专属于Vue。这意味着它可以在任何JavaScript项目中使用,包括React、Angular或其他框架,甚至纯JavaScript项目。 接下来,用户提到Vueaxios的关系。根据之前的引用内容,vue-axios是一个将axios集成到Vue的插件。Vue的插件机制允许通过Vue.use()来扩展功能,这样使用更符合Vue的生态环境。而直接挂载到Vue的原型链上虽然可行,但可能不够优雅,除非是底层实现。因此,推荐使用vue-axios插件的方式,这样能更好地融入Vue项目结构。 需要进一步解释两者的区别:axios是独立的HTTP库,而vue-axios作为桥梁,使其以插件形式集成到Vue中。这样在组件中可以通过this.$axios来调用,而不是直接使用axios或挂载到原型链上的$http。同时,要注意安装方式的不同,使用vue-axios需要同时安装axiosvue-axios,并通过Vue.use()启用。 可能用户还关心为什么推荐使用插件方式。引用中提到,插件写法更符合Vue的生态系统,代码结构更清晰,维护性更好。而直接修改原型链可能带来命名冲突或全局污染的风险,尤其是在大型项目中。 最后,需要确认用户是否理解了两者的独立性,即axios不属于Vue,但可以通过不同方式在Vue项目中使用。总结时,要分点说明关系和推荐用法,确保用户能清晰区分两者的角色。</think>### axiosVue的关系说明 1. **axios的独立性** axios是一个**独立于Vue的第三方HTTP请求库**,其核心功能与Vue无直接关联。它可应用于任何JavaScript环境(如React、Node.js等),主要作用是通过Promise机制实现网络请求管理,例如: ```javascript axios.get('/api/data').then(response => { ... }) ``` 2. **Vue集成axios的两种方式** | 方式 | 实现方法 | 区别 | |---------------------|--------------------------------------------------------------------------|----------------------------------------------------------------------| | 原型链挂载 | `Vue.prototype.$http = axios` | 直接暴露axios实例,可能污染Vue原型链 | | vue-axios插件 | `Vue.use(VueAxios, axios)` | 通过插件系统集成,提供`this.$axios`访问,符合Vue生态规范[^2][^3] | 3. **推荐使用vue-axios的原因** - **封装性**:通过`VueAxios`插件将axiosVue实例解耦,避免全局变量污染 - **可维护性**:符合Vue插件开发规范,便于统一管理请求拦截器、默认配置等 - **TypeScript支持**:插件方式能更好地与Vue的类型系统集成 4. **典型代码对比** ```javascript // 原型链方式(不推荐) this.$http.get('/api') // 插件方式(推荐) this.$axios.get('/api') ``` 5. **依赖关系示意图** $$ \text{Vue项目} \xrightarrow{\text{安装}} \text{vue-axios} \xrightarrow{\text{依赖}} \text{axios} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值