vue基础下

Promise异步请求解决

异步编程解决方案

用resolve和reject两个参数处理成功和失败两种情况,并通过p.then获取处理结果;

var p=new 	Promise(funtion(reslive,reject){
//要加以判断
//成功函数调用 reslive()
//失败函数调用 reject()
})
p.then(funtion(res){
//正确结果
},funtion(err){
//错误结果
})

2.发送多次ajax请求

函数(请求)
	.then(funtion(res){
		return 函数(‘请求’)
	}).then(funtion(res){
		得到数据,
	})

实例方法:

​ 1.then( funtion(){},funtion(){}):获取正确和错误的

​ 2.catch(funtion(){}):获取错误的:

​ 3.finally( funtion(){}):不管失败还是成功都会执行;

对象方法:

​ 1.Promise.all( ):多次触发多个异步,得到所有结果;

Promise.all(实例1,实例2,实例3).then(funtion(result){
	//三个全部打印
	conslie.log(result)
})

​ 2.Promise.race( ):多次触发得到一次成功的结果

Promise.race(实例1,实例2,实例3).then(funtion(result){
//哪个执行得快打印哪个;
conslie.log(result)
})

fetch请求用法

fetch('请求路径').then(data=>{
return data.text();
}).then(res=>{
	console.log(res)
})

method:‘get’/‘post’/‘put’/‘delete’;

body:'请求参数’;

headers:{请求头};

1.get请求:

1.fetch('/abc?id=3'.then(data=>{
	return data.text();
}).then(ret=>{
conslole.log(ret)
}));
2.fetch('/abc/123',{
	method:'get'
}).then(data=>{
	return data.text();
}).then(res=>{
	console.log(res)
})

2.delete请求

fetch('/abc/123',{
	method:'get'
}).then(data=>{
	return data.text();
}).then(res=>{
	console.log(res)
})

3.post请求

1.fetch('路径',{
method:‘post',
body:'uname=lisi&age=21',
headers:{
'Content-Tepy':'application/x-www-form-urlencoded',
}
}).then(data=>{
return data.text()
}).then(ret=>{
console.log(ret)
})

2.fetch('路径',{
method:‘post',
body:JSON.stringify({
	name:'ahha',
	age:20
})
headers:{
'Content-Tepy':'application/json',
}
}).then(data=>{
return data.text()
}).then(ret=>{
console.log(ret)
})

4.push

fetch('路径',{
method:‘push',
body:JSON.stringify({
	name:'ahha',
	age:20
})
headers:{
'Content-Tepy':'application/json',
}
}).then(data=>{
return data.text()
}).then(ret=>{
console.log(ret)
})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkWGSCRL-1614080839961)(C:\Users\22692\AppData\Roaming\Typora\typora-user-images\image-20210204191119649.png)]

axios请求用法

axios.get('路径').then(ret=>{
	console.log(ret.data)
})

1.get请求

axios.get(url,{
	param:{
	id:3
	}
}).then(res=>{
	console.log(res.data)
})

三种方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ru37qH8j-1614080839969)(C:\Users\22692\AppData\Roaming\Typora\typora-user-images\image-20210204191558244.png)]
2.delete
在这里插入图片描述

3.post

在这里插入图片描述
全局配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-klgo5Vij-1614080840004)(C:\Users\22692\AppData\Roaming\Typora\typora-user-images\image-20210204191805333.png)]
1.axios.defalts.timeout=300 // 超时时间
2.axios.default.baseURL=‘默认地址’
3.axios.defatult.headers['mytokan;]=‘1qqsqewe’ //设置请求头

拦截器

1,请求拦截器:

axios.interceptors.request.use(funtion(config){
	return config;
},funtion(err){
	//处理错误信息
})

2.响应拦截器

axios.interceptors.response.use(funtion(res){
	//进行对数据进行处理
	return res;
},function(err){
//处理响应的错误信息
})

async/await 的基本用法

async function queryData(id) {
const ret = await axios.get('/data');
return ret;
}
queryData.then(ret=>{
console.log(ret)
})

多个·异步请求

async function queryData(id) {
const info = await axios.get('/async1');
const ret = await axios.get(‘async2?info=‘+info.data);
return ret;
}
queryData.then(ret=>{
console.log(ret)
})

错误的返回
在这里插入图片描述

路由

1.路由的概念

(1)后端路由:

UR请求地址服务器资源之间的对应关系;

​ 根据不同用户url,返回不同的内容;

(2)前端路由:

用户事件事件处理函数之间对应关系;

​ 根据不同的用户事件,返回不同的内容;

2.路由的使用

(1)导入文件 Vue-router.js;

(2)创建路由实例;

router=new VueRouter({
	rotes:[
	{path:'路径',component:组件名},
	{path:'路径',component:组件名}
	]
})

(3)创建组件:

var 组件名={
	template:`<h1>组件模板</h1>`
}

(4)使用占位符

<router-view></router-view>

(5)在vm里面挂载router

 const vm = new Vue({
      el: '#app',
      router
    })

(6)如果想点击跳转

<router-link to="路径"></router-link>

路由嵌套

例如:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>

<body>
  <div id="app">
    <router-link to="/user">User</router-link>
    <router-link to="/register">Register</router-link>
    <router-view></router-view>
  </div>

  <script>
    const User = {
      template: '<h1>User 组件</h1>'
    }

    const Register = {
      template: `<div>
        <h1>Register 组件</h1>
        </br> 
        <router-link to="/register/teb1">tep1</router-link>   
        <router-link to="/register/teb2">tep2</router-link>
        <router-view></router-view></div>`
    }
    const Teb1 = {
      template: '<h3>teb1 组件</h3>'
    }
    const Teb2 = {
      template: '<h3>teb2 组件</h3>'
    }
    const router = new VueRouter({
      routes: [
        // { path: '/', redirect: '/user' },
        { path: '/user', component: User },
        {
          path: '/register', component: Register, children: [
            { path: '/register/teb1', component: Teb1 },
            { path: '/register/teb2', component: Teb2 }
          ]
        }
      ]
    })

    const vm = new Vue({
      el: '#app',
      data: {},
      router
    })
  </script>
</body>

</html>

路由重定向

概念:简单来说就是一打开的默认展示页面;

{path:'/',redirect:'/user'}//就是打开时,将打开/路径的跳转到'/user'路径下的;

使用场景:

var router=new VueRouter({
	routes:[
		{path:'默认路径',redirct:'跳转路径'}
	]
})

动态路由参数匹配

1.$route.params.id获取

var router=new VueRouter({
	routes:[
		{path:'默认路径/:id',component:组件名}
	]
})
const 组件名={
	template:`<div>{{$route.params.id}}</div>`
}

2.props:true;props:[‘id’]

var router=new VueRouter({
	routes:[
		{path:'默认路径/:id',component:组件名,props:true}
	]
})
const 组件名={
props:['id']
	template:`<div>{{id}}</div>`
}

3.以对象形式传参,但是不能获取id

 var router=new VueRouter({    routes:[        {path:'默认路径/:id',component:组件名,props:{name:'cui',age:'21'}}    ]})
const 组件名={
props:['name','age']
	template:`<div>{{name}}{{age}}</div>`
}

4.通过函数形式传参:解决可以接收id的

 var router=new VueRouter({    routes:[        {path:'默认路径/:id',component:组件名,props:route=>({name:'cui',age:'21'})}    ]})
const 组件名={
props:['id',name','age']
	template:`<div>{{id}}{{name}}{{age}}</div>`
}

命名路由

 var router=new VueRouter({   
 routes:[       
 	{
 		path:'默认路径/:id',
 		name:'名字',
 		component:组件名,
 		props:{name:'cui',age:'21'}}   
     ]})

在这里插入图片描述

声明式导航和编程式导航

在这里插入图片描述

跳转路径和后退

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值