Vue为何弃用Ajax,选择Axios?ajax与axios的区别?

目录
  • 一、ajax与axios前言
  • 二、ajax与axios的区别
  • 三、Vue中axios的使用
    • 一、发送并发请求
    • 二、全局配置
    • 三、创建axios实例
  • 四、总结

axios是通过Promise实现对ajax技术的一种封装,就像jquery对ajax的封装一样,axios回来的数据是promise,ajax回来的数据是回调,axios比ajax更好用更安全。简单来说就是ajax技术实现了局部数据的刷新,axios实现了对ajax的封装;axios有的ajax都有,ajax有的axios不一定有。总结一句话就是axios是ajax,ajax不止axios。

一、ajax与axios前言

发送网络请求的方式有很多,下面来简单介绍一下:

1、传统的Ajax是基于XMLHttpRequest(XHR)

2、jQuery - Ajax

为什么不适用jQuery的Ajax?

在vue开发中不需要使用jQuery,因为jQuery很重量级。

3、vue官方在Vue1.x的时候,推出了Vue-resource。

Vue-resource角jQuery轻便很多,但在vue2.x之后,尤雨溪对Vue-resource不维护了,简言之,就是弃用了。

4、尤雨溪推荐使用axios。

二、ajax与axios的区别

传统 Ajax 指的是 XMLHttpRequest(XHR), 最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱
JQuery ajax 是对原生XHR的封装,除此以外还增添了对JSONP的支持。经过多年的更新维护,真的已经是非常的方便了,优点无需多言;如果是硬要举出几个缺点,那可能只有:

  • 本身是针对MVC的编程,不符合现在前端MVVM的浪潮
  • 基于原生的XHR开发,XHR本身的架构不清晰。
  • JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务)
  • 不符合关注分离(Separation of Concerns)的原则
  • 配置和调用方式非常混乱,而且基于事件的异步模型不友好。

Vue2.0之后,尤雨溪推荐大家用axios替换JQuery ajax,想必让axios进入了很多人的目光中。axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:

  • 从浏览器中创建 XMLHttpRequest
  • 支持 Promise API
  • 客户端支持防止CSRF
  • 提供了一些并发请求的接口(重要,方便了很多的操作)
  • 从 node.js 创建 http 请求
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据

三、Vue中axios的使用

一、发送并发请求

有的时候,会同时发送多个请求。

使用axios.all,可以放入多个请求的数组。

axios.all([])返回的是一个数组,使用axios.spread可以将数组[res1,res2]展开为res1和res2。

import axios from 'axios'

export default {
	name: 'app',
	created(){
		axios.all([axios.get('http://127.0.0.1:8080/getUserList'),
					axios.get('http://127.0.0.1:8080/getUserPage',{
						params: {pageNum: 1, pageSize: 10}
					})
		]).then(axios.spread((res1,res2) => {
			console.log(res1)
			console.log(res2)
		}))
	}
}

二、全局配置

import axios from 'axios'

export default {
	name: 'app',
	created(){
		// 提取全局配置
		axios.defaults.baseURL = 'http://127.0.0.1:8080'

		axios.all([axios.get('/getUserList'),
					axios.get('/getUserPage',{
						params: {pageNum: 1, pageSize: 10}
					})
		]).then(axios.spread((res1,res2) => {
			console.log(res1)
			console.log(res2)
		}))
	}
}

三、创建axios实例

const instance1 = axios.create({
  baseURL: 'http://127.0.0.1:8080',
  timeout: 5000
})

instance1({
  url: '/home/getUserList'
}).then(res => {
  console.log(res);
})

instance1({
  url: '/home/getUserPage',
  params: {
    type: 'pop',
    page: 1
  }
}).then(res => {
  console.log(res);
})

const instance2 = axios.create({
  baseURL: 'http://127.0.0.1:8081',
  timeout: 10000,
  // headers: {}
})

四、总结

Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中;是请求资源的模块;通过promise对ajax的封装。
简单理解为:封装好的、基于promise的发送请求的方法,因此不用设置回调函数,直接去调用then方法。
属性:url、method、data、responseType、.then、.catch…

axios是一个基于promise 的 http库,主要实现 ajax异步通信功能,用于向后端发起请求,还有在请求中做更多是可控功能;ajax是对原生XHR的封装;axios实现对 ajax封装,ajax实现局部数据的刷新;

到此这篇关于Vue为何弃用Ajax,选择Axios?ajax与axios的区别的文章就介绍到这了,更多相关Vue中的Axios内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue项目使用axios发送请求让ajax请求头部携带cookie的方法

    最近做vue项目时遇到登录权限问题,登录以后再发送的请求头部并没有携带登录后设置的cookie,导致后台无法校验其是否登录.检查发现是vue项目中使用axios发送ajax请求导致的.查看文档得知axios默认是不让ajax请求头部携带cookie的,因此,在main.js中设置如下: import axios from 'axios' axios.defaults.withCredentials=true;//让ajax携带cookie Vue.prototype.$axios = axios

  • axios和ajax的区别点总结

    本文操作环境:windows7系统.ECMAScript 6版.Dell G3电脑. axios和ajax的区别是什么? axios和ajax的区别及优缺点: ajax: 1.什么是ajax Ajax是对原生XHR的封装,为了达到我们跨越的目的,增添了对JSONP的支持. 异步的javascript和xml,ajax不是一门新技术,而是多种技术的组合,用于快速的创建动态页面,能够实现无刷新更新数据从而提高用户体验. 2.ajax的原理? 由客户端请求ajax引擎,再由ajax引擎请求服务器,服务

  • 第一次在Vue中完整使用AJAX请求和axios.js的实战记录

    目录 零.AJAX 0.0 npm install express 0.1 express.js 0.2 GET-HTML 0.3 POST-HTML 一.导入模块 1.1方法一.下载axios.js,并放入vue工程plugins目录下 1.2方法二使用包管理器安装axios 1.3方法三直接引入CDN 二.实际应用 2.1以为和风天气API实践: 2.2数据接口如下: 2.3实现: 2.4完整Vue: 三.BUG修复 3.1 Can‘t resolve ‘axios‘ in ‘C:\vue\

  • vue axios 在页面切换时中断请求方法 ajax

    如下所示: Vue.prototype.$ajax=axios; const CancelToken = axios.CancelToken; let cancel; let cancelAjaxText = '中断成功'; Vue.prototype.post = function(url,data,loading){ var ajax = Vue.prototype.$ajax({ method: 'post', url:url, data: data, cancelToken: new C

  • Vue使用ajax(axios)请求后台数据的方法教程

    目录 前言: Axios安装 前台部分 连接后台部分(node) 总结 前言: 页面上那些数据,绝大部分都不是静态的数据,而是通过调用后台接口把数据渲染到页面上的效果.ajax可以帮助我们更好的去实现这一点,下面是详解在vue中如何使用它. vue本身它是不支持直接发送ajax请求的,需要用到axios(一个基于promise的HTTP库,可以用在浏览器和node.js中)这是Axios文档的介绍,详细可查看:使用说明 · Axios 中文说明 · 看云 Axios安装 前台部分 1.npm安装

  • vue使用Axios做ajax请求详解

    vue2.0之后,就不再对vue-resource更新,而是推荐使用axios 1. 安装 axios $ npm install axios 或 $ bower install axios 2. 在要使用的文件中引入axios import axios from 'axios' 3. 使用axios做请求 可以通过向 axios 传递相关配置来创建请求, 只有 url 是必需的.如果没有指定 method,请求将默认使用 get 方法. { // `url` 是用于请求的服务器 URL url

  • Vue为何弃用Ajax,选择Axios?ajax与axios的区别?

    目录 一.ajax与axios前言 二.ajax与axios的区别 三.Vue中axios的使用 一.发送并发请求 二.全局配置 三.创建axios实例 四.总结 axios是通过Promise实现对ajax技术的一种封装,就像jquery对ajax的封装一样,axios回来的数据是promise,ajax回来的数据是回调,axios比ajax更好用更安全.简单来说就是ajax技术实现了局部数据的刷新,axios实现了对ajax的封装:axios有的ajax都有,ajax有的axios不一定有.

  • 从Ajax到JQuery Ajax学习

    Ajax篇 XMLDocument和XMLHttpRequest对象 第一:创建XMLHttpRequest请求对象 复制代码 代码如下: function getXMLHttpRequest() { var xRequest=null; if(window.XMLHttpRequest) { xRequest=new XMLHttpRequest(); }else if(typeof ActiveXObject != "undefined"){ xRequest=new Active

  • IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

    本文实例讲述了IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别.分享给大家供大家参考,具体如下: 前面介绍了<Javascript基于AJAX回调函数传递参数>,这里主要来分析一下ajax传递中文参数过程中针对不同浏览器的乱码处理方法. Ajax传递参数为中文时出现乱码,我遇到的情况是: 1.我的数据库连接 编码为 GB2312,latin1_swedish_ci 2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8 3.我的页面显示方式为两种: 一)页面加载时自

  • jQuery ajax(复习)—Baidu ajax request分离版

    你没有看错标题,本文的确是在讲Baidu ajax,不过是很久很久以前的版本了. 由于jQuery ajax模块有800+行,而核心函数jQuery.ajax就有380+行,直接分析这段代码很容易被代码逻辑弄晕. 所以我们先分析一段简单的ajax代码,来自早期的百度七巧板项目. 通过这个来先复习一遍ajax的知识. baidu.ajax.request分离版 复制代码 代码如下: /** * 发送一个ajax请求 * @author: allstar, erik, berg * @name aj

  • PHP处理Ajax请求与Ajax跨域问题

    PHP判断是否为Ajax请求 我们知道,在发送ajax请求的时候,可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, 或者$.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断.一般情况下$_SERVER['HTTP_X_RE

  • AJAX 常用函数创建XMLHTTP对象,区别IE,Mozilla浏览器

    AJAX 常用函数创建XMLHTTP对象,区别IE,Mozilla浏览器的函数,网上有很多创建XMLHTTP对象,区别IE,Mozilla浏览器的函数,这个比较不错,大家可以直接拿用了 复制代码 代码如下: function getRequest() {          http_request = false;          if (window.XMLHttpRequest) {               //对于Mozilla﹑Netscape﹑Safari等浏览器,创建XMLHt

  • 给初学ajax的人 ajax函数代码

    复制代码 代码如下: /* 调用方式: 1.POST方式 var txt = escape(sender.value); //document.getElementById("<%= txtName.ClientID %>").value); var data = "name=" + txt + "&pwd=" + txt; var option = { "url": "handler/Handl

  • 简单的AJAX实现(HELLO AJAX)

    客户端部分: 复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html"/> <script language="javascript"> var ajax; function createAjax() { if(window.ActiveXObject) { try { return new Active

  • AJAX使用get与post模式的区别分析

    本文实例分析了AJAX使用get与post模式的区别.分享给大家供大家参考.具体分析如下: 如果是get 模式的请求,则将传递参数通过URL 地址发送到服务器端: 如果是post 模式的请求,则将传递参数通过send( ) 方法发送到服务器端(并且必须设置请求文件头): post 模式的代码如下: <script type="text/javascript"> <!-- var queryString = "firstName=xugang&birt

  • jQuery Ajax 实例代码 ($.ajax、$.post、$.get)

    $.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$.ajax的一般格式 $.ajax({ type: 'POST', url: url , data: data , success: success , dataType: dataType }); 二.$.ajax的参数描述 参数 描述 url 必需.规定把请求发送到哪个 URL. data 可选.映射或字符串值.规定连同请求发送到服务器的数据. success(data, textS

随机推荐