ajax、axios、alova的区别

一、ajax

ajax 是 Asynchronous JavaScript and XML 的缩写,异步的 JavaScript 和 XML. Ajax 描述了一种主要使用脚本操作 HTTP 的 Web 应用架构,Ajax 应用的主要特点是使用脚本操纵 HTTP 和 Web 服务器进行数据交换,不会导致页面重载。

 Ajax机制:通过创建 XMLHttpRequest 对象与服务器进行数据交互,向服务器发送请求,接受服务器的响应。

简单来说:AJAX 是与服务器交换数据并更新部分网页的,在不重新加载整个页面的情况下。Ajax = 异步 JavaScript 和 XML

$.ajax({
	url: '/getName',
	type: 'get',
	dataType: 'json',
	data: {
		name:'tom'
	},
	success: function (response) {
		console.log(response);
	}
});
// ajax 基本js实现步骤/原理
function ajax(url, method, data = null, async = true) {
    // 1.创建XMLHttpRequest对象
    var xhr;
    if (window.XMLHttpRequest) {
        // 标准浏览器
        xhr = new XMLHttpRequest();
    } else {
        // IE6, IE5
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    // 2.创建一个新的HTTP请求,并指定请求的方法、URL、是否异步处理请求及验证信息
    xhr.open(method, url, async);
    // 3.发送HTTP请求
    xhq.send(data);
    // 4. onreadystatechange 事件绑定方法,监听状态的改变
    xhr.onreadystatechange = function () {
        /**
         * readyState属性:表示请求/响应过程的当前活动阶段
            0:未初始化。尚未调用 open()方法。
            1:启动。已经调用 open()方法,但尚未调用 send()方法。
            2:发送。已经调用 send()方法,但尚未接收到响应。
            3:接收。已经接收到部分响应数据。
            4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了。
         */
        if (xhr.readyState === 4 && xhr.status === 200) {
            // 响应的数据
            var result = xhr.responseText;
            // 执行业务逻辑
        }
    }
}

二、axios

axios是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中

axios 是目前流行的基于 Promise 的 HTTP 请求库,它可以在浏览器和 Node.js 中工作。axios 支持各种请求类型、拦截请求和响应等等。axios 通过 Promise API 提供了更加优雅的方式来处理异步请求和响应。除此之外,axios 还提供了一些其他有用的功能,如取消请求、自动转换 JSON 数据等等

特点:

  •     从浏览器中创建 XMLHttpRequests
  •     从 node.js 创建 http 请求
  •     支持 Promise API
  •     拦截请求和响应
  •     转换请求数据和响应数据
  •     取消请求
  •     自动转换 JSON 数据
  •     客户端支持防御 XSRF
// npm install axios


import axios from "axios";

axios({
	url: '/getName',
	method: 'get',
	responseType: 'json',  // 默认的
	data: {
		name:'tom'
	}
}).then(function (response) {
	console.log(response);
	console.log(response.data);
}).catch(function (error) {
	console.log(error);
});

// get请求
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

三、 什么是 alova?

alova 是一个基于 Vue.js 和 async/await 的 HTTP 请求库。它也类似于 axios,提供了请求拦截、响应拦截、取消请求等功能,并且根据 Vue 的特点,可以非常方便地和 Vue.js 集成。和 axios 不同的是,alova 使用 async/await 进行异步操作,让代码更加简洁易懂。。
下面是一个使用 alova 发送 GET 请求的示例:

http.get('/api/data')
  .then(response => {
    console.log(response.data)
  })
  .catch(error => {
    console.log(error)
  })

如何在 Vue 中使用 alova

 要在 Vue 中使用 alova,我们需要先安装 alova 和 RxJS:

npm install alova

然后在项目中使用:

import Vue from 'vue'
import alova from 'alova'

Vue.use(alova)
<template>
  <div>
    <button @click="getData">点击获取数据</button>
  </div>
</template>

<script>
export default {
  methods: {
    async getData() {
      const res = await this.$http.get('/api/data')
      console.log(res.data)
    }
  }
}
</script>

如上代码,通过 this.$http.get 获取资源,可以得到响应的数据,不用返回 Promise 再进行链式调用,非常方便。 

四、优缺点

ajax

  • 本身是针对MVC的编程,不符合现在前端MVVM的浪潮。
  • 基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案。
  • jQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务。

axios

  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 客户端支持防止CSRF
  • 提供了一些并发请求的接口
     

alova

  • 轻量级:压缩后只有4kb,只有Axios的40%
  • 高性能:根据不同的请求场景,提供有针对性的请求策略,来提升应用流畅性、可用性,降低服务端压力
  • 灵活:可以与任何请求库配合使用,也可以单独使用;可以使用内置的策略,也可以自定义策略;可以全局配置策略,也可以单独配置策略
  • 易用:与Axios相似的API设计,让我们上手更简单熟悉;提供了详细的文档和示例

alova是基于async/await 的 HTTP 请求库,axios 是通过 promise 实现对 ajax 技术的一种封装,就像 jQuery 实现 ajax 封装一样。简单来说: ajax 技术实现了网页的局部数据刷新,axios 实现了对 ajax 的封装,alova实现了对axios的提升。axios 是 ajax,ajax 不止axios 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值