一、axios的特点有哪些
- Axios 是一个基于 promise 的 HTTP 库,支持promise所有的API
- 可以拦截请求和响应
- 可以转换请求数据和响应数据,并对响应回来的内容自动转换成 JSON类型的数据
- 安全性更高,客户端支持防御CSRF
二、axios为什么既能在浏览器环境运行又能在服务器(node)环境运行
- axios在浏览器端使用XMLHttpRequest对象发送ajax请求
- 在node环境使用http对象发送ajax请求
var defaults.adapter = getDefaultAdapter();
function getDefaultAdapter () {
var adapter;
if (typeof XMLHttpRequest !== 'undefined') {
// 浏览器环境
adapter = require('./adapter/xhr');
} else if (typeof process !== 'undefined') {
// node环境
adapter = require('./adapter/http');
}
return adapter;
}
通过判断XMLHttpRequest和process这两个全局变量来判断程序的运行环境的,从而在不同的环境提供不同的http请求模块,实现客户端和服务端程序的兼容
三、axios 与 ajax 的区别
相同点:底层都是基于 xhr 实现
区别:axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样。axios是ajax, ajax不止axios
优缺点:
ajax:
- 本身是针对MVC的编程,不符合现在前端MVVM的浪潮
- JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常浪费性能
axios:
- 仅用作网络请求
- 客户端支持防止CSRF
详细参考第一点