【vue】 面试题总结 - axios

资源来自:https://developer.aliyun.com/ask/289308?spm=a2c6h.13066354.0.0.767533b5ZcyIwH

ajax、fetch、axios这三都有什么区别?

ajax是最早出现发送后端请求的技术,属于原生js范畴,核心是使用XMLHttpRequest对象,使用较多并有先后顺序的话,容易产生回调地狱。
fetch号称可以代替ajax的技术,是基于es6中的Promise对象设计的,参数和jQuery中的ajax类似,它并不是对ajax进一步封装,它属于原生js范畴。没有使用XMLHttpRequest对象。
axios不是原生js,使用时需要对其进行安装,客户端和服务器端都可以使用,可以在请求和相应阶段进行拦截,基于promise对象

如果将axios异步请求同步化处理?

async ,await
Generator函数
回调里面写回调
// 统一处理axios请求

   async getHistoryData (data) {
      try {
        let res = await axios.get('/api/survey/list/', {
          params: data
        })
        this.tableData = res.data.result
        this.totalData = res.data.count
      } catch (err) {
        console.log(err)
        alert('请求出错!')
      }
    }
  }

为何官方推荐使用axios而不用vue-resource?

1.vue-resources不再更新了,vue作者尤大推荐axios。
2.axios更加强大
3.axios就是一个基于ES6的Promise的网络请求库,其实说干净了就是一个打包好的XMLHttpRequests,也就是说,这个也是一个ajax库。
4.axios
在浏览器里建立XHR
通过nodejs进行http请求
转换或者拦截请求数据或响应数据
支持Promise的API
可以取消请求
自动转换JSON
可以防御XSRF攻击!
5.vue-resources
只提供了浏览器版本

你了解axios的原理吗?有看过它的源码吗?

https://juejin.cn/post/6844904019987529735

你有封装过axios吗?主要是封装哪方面的?

封装处理配置(路径、时间、token)、统一管理接口、错误处理、不同形式的请求、消息提示、loading等。

如何中断axios的请求?

方法一、使用cancelToken.sourse工厂方法创建cancel token
方法二、通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token

axios是什么?怎样使用它?怎么解决跨域的问题?

axios 的是一种异步请求,用法和ajax类似,安装npm install axios --save 即可使用,请求中包括get,post,put, patch ,delete等五种请求方式,
解决跨域可以在请求头中添加Access-Control-Allow-Origin,
也可以在index.js文件中更改proxyTable配置等解决跨域问题
因为axios在vue中利用中间件http-proxy-middleware做了一个本地的代理服务A,相当于你的浏览器通过本地的代理服务A请求了服务端B,浏览器通过服务A并没有跨域,因此就绕过了浏览器的同源策略,解决了跨域的问题。

你可能感兴趣的:(vue开发实践总结,vue)