Vue请求ajax之fetch
使用方法:
fetch(url,{
headers:{
"token":localStorage.getItem('token'),
"content-type":"apllication-xxx-urlencoded"
},
methods:"GET/POST",
data:{
}
}).then(function(res){
return res.json() //text() arrayBuffer() blob() formData()
}).then(res=>{
//res 才是请求的结果 格式化之后(什么格式取决于 第一个 then 返回的处理方法)
})fetch 兼容性差:使用promise 不支持 ie11及以下的 且,在vue react等脚手架中 配置babel es6转es5,也无法转换promise
使用babel-polyfill 插件来解决
Vue 如何兼容IE(IE9及以上), 使用babel-polyfill 插件来解决解决fetch 兼容性问题?
1,使用babel-polyfill
2,直接使用 git https://github.com/github/fetch
基于原生的fetch 封装的,当有的浏览器不支持fetch时,转换成普通的xhr对象(内部集成了babel-polyfill)Vue的axiso ajax库
axios 是一个 封装好的 第三方ajax请求的库
特点:支持restfulapi 支持promise 解决回到地狱 支持ajax请求拦截get请求:
axios.get('url?params1=v¶ms2=值2').then().catch()
axios.get(url,{
params:{
key1:v1,
key2:v2
}
})post请求:
axios.post(url,{
key1:v1,
key2:v2
}).then().catch()Vue中的路由
单页面应用:single page application 整个项目只有一个html
优点:
页面性能较高
页面间切换速度很快缺点:
不利于seo (搜索引擎优化)
爬虫 爬取页面关键字
单页面应用一般都是基于webpack进行构建的,所以资源,都是在js中,爬虫不认识jsvue路由: 一个地址 对应 一个组件
Vue中的嵌套路由
1,在以及路由 路由规则中 routes 中 定义 children属性([]);在children属性中,定义该路由的子路由 规则(子路由路径 最好加上 父路由路径作为前缀)
2,在 一级路由 对应的 组件 中 设置 router-view 作为二级路由的出口
3,设置 一级路由中 默认显示某个二级路由
{
path:"/news",
redirect:"/news/nativeNews"
},
{
path:"",
component:NativeNews
},Vue中的命名路由
定义路由规则时,可以给当前 路由起一个名字 (定义一个name属性)
const routes = [
{
path:"/",
redirect:"/home"
},
{
path:"/home",
name:"home",
component:Home
},
{
path:"/news",
name:"news",
component:News
}
];
router-link
to属性值
字符串
router-link to="/news" 通过path跳转
对象
router-link :to="{name:'home'}" 可以通过名字跳转
router-link :to="{path:'/home'}" 可以通过path跳转 传参 params传参
router-link :to="{name:'home',params:{id:111}}"
在目标路由中 this.$route.params.id获取
注意:
1,params传参 是 隐式(不会在地址栏显示),刷新后 参数会丢失
2,params传参 必须 和 name跳转路由 一起使用,和path 不起效果 Vue编程式导航
声明式导航 : 在模板(html中),通过标签(组件) 跳转 router-link跳转
编程式导航 : 在js中通过api跳转
vueRouter 给 Vue的原型中 还灌入一个对象 $router,保存了 操作 路由的 api
push
this.$router.push() 跳转路由
push参数 同 router-link to属性的值(一毛一样)
字符串
this.$router.push("/news") 通过path跳转
对象
this.$router.push({name:'home'}) 可以通过名字跳转
this.$router.push({path:'/home'}) 可以通过path跳转 传参 params传参
this.$router.push({name:'home',params:{id:111}})
在目标路由中 this.$route.params.id获取
this.$router.replace() 参数 同上
与push不同的是?
跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。 (返回上一步 时,之前 不存在了,到上两步)
this.$router.go(n)
go(0) 刷新
go(1) 前进一步
go(-1) 返回上一步Vue中query传参
router-link
:to="{path:'/news',query:{id:1,id2:2}}"
this.$router.push({
path:'/news',
query:{
id:1,
id2:2
}
})获取: this.$route.query.xxx
Vue中的导航守卫
全局守卫
全局前置守卫
router.beforeEach((to,from,next)=>{ });
全局后置守卫
router.afterEach((to,from)=>{ })
路由独享
只针对某个路由
routes:[
{
path:"/home",
component:Home,
beforeEnter:(to,from,next)=>{ }
}
]
组件内部
beforeRouteEnter
beforeRouteUpdate 新增 主要用于 动态路由
beforeRouteLeave
vue中用到的路由及axios vue的路由实现
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Vue3 实现一个简单的路由切换效果
Vue3 实现一个简单的路由切换效果
vue router