Vue-04-axios异步通信

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 Vue-04-axios异步通信,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

5.axios异步通信

5.1 什么是Axios

  • 首先需要知道:axios不是一种新的技术。

  • axios 是一个基于nodejs中的Promise 用于浏览器 的 HTTP 客户端的异步通信框架,本质上也是对原生XHR的封装实现ajax异步通信,只不过它是Promise的实现版本,符合最新的ES规范,有以下特点:

    • 从浏览器中创建XMLHttpRequests
    • 从node.js创建http请求
    • 支持Promise API[US中链式编程]
    • 拦截请求和响应
    • 转换请求数据和响应数据
    • 取消请求
    • 自动转换JSON数据
    • 客户端支持防御XSRF(跨站请求伪造)
  • GitHub:https://github.com/axios/axios 中文文档:http:/www.axios-js.com/

  • 为什么要使用Axios

由于vue.js是一个视图晨框架并且作者(尤雨溪)严格准守SoC(关注度分离原则),所以vue.js并不包含AJAX的通信功能,为了解决通信问题,作者单独开发了一个名为vue-resource的插件,不过在进入2.0版本以后停止了对该插件的维护并推荐了Axios框架。少用jQuery,因为它操作Dom太频繁!

5.2 第一个Axios应用程序

  • 一般开发的接口大部分都是采用JSON格式,可以先在项目里模拟一段JSON数据,数据内容如下:创建一个名为servicejs.json的文件并填入上面的内容,放在项目的根目录下
{
	"name":"zs",
	"url": "http://baidu.com",
	"address": {
	 "city":"北京"
    },
	"hower":[
		{"option":"java"},
		{"option":"python"},
		{"option":"c++"},
		{"option":"读书"}
	]
}
  • vue-demo测试页面
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 解决模板加载数据前显示模板代码问题,第一次刷新不显示内容 -->
		<style>
			[v-cloak]{
				 display: none; 
			}
		</style>
	</head>
	<body>
		<div id="app" v-cloak>
			<p>{{result.name}}</p>
			<a v-bind:href="result.url">点我链接</a>
			<p>{{result.address.city}}</p>
			<p>{{result.hower}}</p>
			<div v-for="(item,index) in result.hower">
				<input  type="checkbox" name="hower" value="item.option" checked/>
				<label>{{item.option}}</label>
			</div>
		</div>
		
		<script src="static/vue.js"></script>
		<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
		<script>
			/* vm对象 */
			const vm = new Vue({
				el: '#app',
				//data: {checkvalues: []}, //属性
				data (){ //data()方法
					return{
						result: { //请求的返回参数必须和请求的json数据一致,可以不写,但不能写错
							'name': '',
							'url': '',
							'address': {
								'city': ''
							},
							'hower': [
			
							]
						}
					}
				},
				mounted (){ //钩子函数
					axios.get('servicejs.json').then(Response=>{
						console.log(Response.data)
					    this.result=Response.data
					} )
				}
			})
		</script>
	</body>
</html>
  • 说明:

    1.在这里使用了 v-bind将a:href的属性值与Vue实例中的数据进行绑定
    2.使用axios框架的get方法请求AJAX并自动将数据封装进了Vue实例的数据对象中
    3.我们在data中的数据结构必须要和Ajax响应回来的数据格式匹配!

5.3 Vue的生命周期

  • 官方文档:https:/cn.vuejs…org/v2/g uide/instance.html#生命周期图示:
  • Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载DOM、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。
  • 在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册JS方法,可以让我们用自己注册的JS方法控制整个大局,在这些事件响应方法中的this直接指向的是Vue的实例。
  • -这个vue生命周期中的注意点:
  • 实例化Vue对象,没有真正渲染,加载时先出来模板,后渲染数据

  • 编译模板把data对象里的数据和vue语法声明的模板编译成浏览器可读的HTML,data数据dom模板进行绑定

  • 将编译好的HTML替换掉el属性所指向的dom,此时HTML替换实例中的el,数据渲染完毕

  • 将编译完成的HTML挂载到对应虚拟dom时触发的钩子

  • 编译好的HTML挂载到页面后,执行的事件钩此钩子函数中一般会做一些ajax请求获取数据进行数据初始化,(页面加载之前)

注意:mounted在整个实例中只执行一次

  • 实时监控数据变化并随之更新DOM
  • 拆除数据监听,子组件和事件监听

下一篇:Vue-05-计算属性、内容分发、自定义事件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123878.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!