一、数据请求
(1)fetch
为什么使用?
XMLHttpRequest 是一个设计粗糙的 API,配置和调用方式非常混乱,
而且基于事件的异步模型写起来不友好。
兼容性不好,这是W3C的标准,将来如果实现兼容,一定大火
//get
fetch("**").then(res=>res.json()).then(res=>{console.log(res)})
fetch("**").then(res=>res.text()).then(res=>{console.log(res)})
//post
fetch("**",{
method:'post',
headers: {
"Content‐Type": "application/x‐www‐form‐urlencoded"
},
body: "name=kerwin&age=100"
}).then(res=>res.json()).then(res=>{console.log(res)});
fetch("/users",{
method:'post',
// credentials: 'include',
headers: {
"Content‐Type": "application/json"
},
body: JSON.stringify({
name:"kerwin",
age:100
})
}).then(res=>res.json()).then(res=>{console.log(res)});
并且避免了回调地狱。
注意:
Fetch 请求默认是不带 cookie 的,需要设置 fetch(url, {credentials:
'include'})
(1)axios
注意:axios外层会进行封装一个data。
<script>
//axios请求,属于第三方的库
new Vue({
el:"#box",
data:{
datalist:[]
},
methods:{
bth(){
//axios自动包装一个data属性 res.data这是最外层
//使用箭头函数
axios.get("./json/test.json").then(res=>{
this.datalist = res.data.data.films;
},err=>{
console.log(err);
})
}
}
})
</script>
二、计算属性
复杂逻辑,模板难以维护
(1) 基础例子
(2) 计算缓存 VS methods
-计算属性是基于它们的依赖进行缓存的。
-计算属性只有在它的相关依赖发生改变时才会重新求值
(3) 计算属性 VS watch
- v-model
下面是计算属性实现模糊查找
<div id="box">
<input type="text" v-model="mytext"/>
<!-- <input type="text" @input="handleInput" /> -->
<ul>
<li v-for="data in getMyDatalist">
{{data}}
</li>
</ul>
</div>
<script type="text/javascript">
//["aaa","bbb","ccc","ddd","add","cee","eee"]
var vm = new Vue({
el:"#box",
data:{
mytext:'',
datalist:["aaa","bbb","ccc","ddd","add","cee","eee"]
},
computed: {
getMyDatalist(){
return this.datalist.filter(item=>item.indexOf(this.mytext)>-1)
}
},
})
var arr = [1,2,3,4,5]
var newlist =arr.filter(item=>item>=3)
console.log(newlist)
</script>