vuex ESpromise XMLHttpRequest

vue下状态管理模式 vuex,ES6新增promise对象,Ajax,XMLHttpRequest-异步请求
小程序首页
首页数据是从仓库里面拿到的
1.vuex
是一个专门为vue.js应用程序开发的状态管理模式。
采用集中式管理应用的所有组件状态,并以相应的规格保证状态以一种可以预测的方式发生变化。
state:共有数据到放在这里
view:以声明方式讲state映射到视图
actions:响应在view上的用户输入导致的状态变化

什么时候使用:大型单页应用 (比如说电商小程序,比如说装修的首页)

2.store模式
状态管理也就是数据状态管理,vue 应用程序的各组件之间经常需要进行通信,
除了 v-on、EventBus 等通信方式外,可以采用数据共享的方式进行通信。这种简单的数据共享模式就是 store 模式。

store 状态管理模式的实现思想很简单,就是定义一个 store 对象,对象里有 state 属性存储共享数据,
对象里还存储操作这些共享数据的方法。在组件中将 store.state 共享数据作为 data 的一部分或全部,
在对 store.state 对象里的共享数据进行改变时,必须调用 store 提供的接口进行共享数据的更改。

3.home.vue里面有一个向上提交的change方法,里面携带的参数是当前商户的数据 (后面需要看这个事件哪里用到了)

  1. Promise对象
    ES6提供了promise对象,promise对象代表了未来将要发生的事件,用来传递异步操作的消息
    1.对象的状态不受外界的影响,Promise对象代表一个异步操作,有三种状态:
    pending:初始状态,不是成功或者失败状态
    fulfilled:意味着操作成功完成
    rejected:意味着操作失败
    只有异步操作的结果,可以决定当前是哪一种状态 ,任何其他操作都无法改变这个状态
    这又是promise名字的由来,他的英文意思就是[承诺],表示其他手段无法改变

    2.状态一旦改变,就不会再改,任何时候都可以得到这个结果,promise对象的状态的改变,只有下面两种情况:
    从pending变成resolved,从pending变成rejected,只要这两种情况发生,状态就凝固了,就不用再变了
    会一直保持这个结果,就算改变已经发生过了,你再对promise对象对象添加回调函数,也会立即得到这个结果,
    这与事件完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的
    promise优缺点
    有了promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
    此外,promise对象提供统一接口,使得控制异步操作更加容易
    缺点:首先无法取消promise,一旦新建他就会立即执行,无法中途取消
    其次,如果不设置回调函数,promise内部抛出的错误,不会反应在外部,
    第三:当处于pending状态时,无法得知目前进展到哪一个阶段,(刚刚开始还是即将完成)
    3.Promise创建
    要想创建一个Promise对象,可以使用new来调用Promise的构造器进行实例化
    var promise = new Promise(function(resolve,reject){
    包含一个参数和一个带有resolve(解析)和reject(拒绝)两个参数的回调,
    在回调中进行一些操作,(例如异步),如果一切都正常,则调用resolve,失败调用reject
    进行异步处理,
    处理结束后,调用Resolved,reject
    })
    4.promise方法
    对于已经实例化的Promise对象可以调用promsie.then()方法,传递resolve和reject方法作为回调
    Promsie.then()是promise的最常用的方法
    5.new XMLHttpRequest(); XMLHttpRequest对象用于在后台与服务器交换数据
    特点:再不重新加载页面的情况下更新网页, 在页面已加载后从服务器请求数据
    在页面已加载从服务器端接收数据,在后台向服务器发送数据

6.AJAX:向服务器发送请求 (XMLHttpRequest是AJAX的基础)
就是在不刷新界面的情况下,向服务器发送请求拿到数据,处理数据进行展示
1.XMLHttpRequest对象用于和服务器交换数据
2.向服务器发送请求:需要使用XMLHttpRequest对象的open()和send()
(1) open(method,url,async):规定请求的类型,URL以及是否异步处理请求
method:GET,POST,请求的类型,
url:文件在服务器上的位置,
async:true(异步)或false(同步)
eg:xmlObj.open(“GET”,“demo.asp?t=xxx”,true); xmlObj.send();

	(2) send(string):仅用于POST请求  
		eg:xmlhttp.open("POST","demo_post.asp",true); xmlObj.send();
	如果需要像HTML表单那样POST数据,请使用setRequestHeader()来设置请求头,然后在send方法中规定发送的数据
		setRequestHeaer(header,value):向请求添加HTTP头
		header:规定头的名称,value:规定头的值
	eg: xmlhttp.open("POST","ajax_test.asp",true);
		xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		xmlhttp.send("fname=Bill&lname=Gates");
	与POST相比 ,GET更简单也更快,并且在大部分情况下都可以用
	在以下情况,请使用POST:
		无法使用缓存文件(更新服务器上的文件或数据库)
		向服务器发送大量数据(POST没有数量限制)
		发送包含未知字符的用户输入时,POST比GET更稳定也更可靠
3. 服务器响应
	如果需要获得服务器的响应,需要使用XMLHttpRequest对象的ResponseText或responseXML属性
	responseText:获得字符串形式的响应数据
	eg:document.getElementById('myDiv').innerHTML = xmlhttp.responstText;
	responseXML:获得XML形式的响应数据
	拿到后端返回XML数据,进行处理,拿到需要的数据进行展示
	xmlDoc=xmlhttp.responseXML;
	txt="";
	x=xmlDoc.getElementsByTagName("ARTIST");
	for (i=0;i<x.length;i++)
	  {
	  txt=txt + x[i].childNodes[0].nodeValue + "<br />";
	  }
	document.getElementById("myDiv").innerHTML=txt;
4.onreadaystatechange事件
	当请求被发送到服务器时,我们需要执行一些基于响应的任务(业务逻辑代码) 
	每当readyState改变时,就会触发onreadystatechange事件
	下面是XMLHttpRequest的状态信息
	 onreadystatechange:存储函数(函数名),每当redaystate属性改变时,就会调用这个函数
	 readyState:存有XMLHttpRequest的状态。从0到4发送变化
		0:请求未初始化;1:服务器连接已建立;2:请求已接收
		3:请求处理中;4:请求已完成,且响应已就绪
	 status:200:“OK”; 404:未找到页面
	 在onreadystatechange事件中,我们规定当服务器响应已经做好被处理的备注时所执行的任务
	 当readystate等于4 且状态为200时,表示响应已就绪
	 eg: xmlhttp.onreadystatechange=function(){
		   if (xmlhttp.readyState==4 && xmlhttp.status==200)
			 {
			 document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
			 }
		   }
	callback函数:就是以参数形式传给另一个函数
	 如果网站上存在多个AJAX任务,那么应该为创建XMLhttpRequest对象编写一个标准的函数,这样每个AJAX任务写的
	 时候直接调用这个函数,不用每次写创建对象,发送请求等代码,也就是封装一个函数的意思
		var xmlhttp; // 封装创建对象,发送请求成一个函数 调用的时候把参数传进去
		function loadXMLDoc(url,cfunc){
			if (window.XMLHttpRequest)
			  {// code for IE7+, Firefox, Chrome, Opera, Safari
			  xmlhttp=new XMLHttpRequest();
			}else{// code for IE6, IE5
			  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			xmlhttp.onreadystatechange=cfunc; 状态改变监听事件
			xmlhttp.open("GET",url,true);
			xmlhttp.send();
		}
		
		function myFunction(){
			loadXMLDoc("/ajax/test1.txt",function(){
			  if (xmlhttp.readyState==4 && xmlhttp.status==200){
				document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
				}
			});
		}
	拿到后端数据,进行处理
<script type="text/javascript">
function loadXMLDoc(url){
	var xmlhttp;
	var txt,x,xx,i;
	if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	}else{// code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function(){
	  if (xmlhttp.readyState==4 && xmlhttp.status==200){
		txt="<table border='1'><tr><th>Title</th><th>Artist</th></tr>";
		x=xmlhttp.responseXML.documentElement.getElementsByTagName("CD");
		for (i=0;i<x.length;i++){
		  txt=txt + "<tr>";
		  xx=x[i].getElementsByTagName("TITLE");
			{
			  txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
			}
		  txt=txt + "</tr>";
		  }
		txt=txt + "</table>";
		document.getElementById('txtCDInfo').innerHTML=txt;
		}
	  }
	xmlhttp.open("GET",url,true);
	xmlhttp.send();
}
</script>

7.HTML DOM
childNodes 属性返回节点的子节点集合,以 NodeList 对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值