Vue-router的路由

vue-router

原理
路由就是用来解析URL以及调用对应的控制器,并返回从视图对象中提取好的网页代码给web服务器,最终返回给客户端。

路由有两种模式hash和history。

hash模式
在浏览器中符号的“#”,以及#后面的字符称之为hash,用window.location.hash读取;
特点
hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,
hash不会重加载页面。
hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.xxx.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。

history模式
history采用HTML5的新特性;且提供了两个新方法:pushState(),
replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。
特点
history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,如 地址后加上/items/id。后端如果缺少对 /items/id 的路由处理,将返回 404 错误。

路由传参
一共有三种传参方式
分别是query,params,动态路由传参
接收:
通过query方式传递过来的参数一般是通过this. r o u t e . q u e r y 接 收 通 过 p a r a m s 方 式 传 递 过 来 的 参 数 一 般 是 通 过 t h i s . route.query接收 通过params方式传递过来的参数一般是通过this. route.queryparamsthis.route.params接收
通过动态路由传参方式传递过来的参数一般是通过this.$route.params接收

query使用path和name传参跳转都可以,而params只能使用name传参跳转。

传参跳转页面时,query不需要再路由上配参数就能在新的页面获取到参数,params也可以不用配,但是params不在路由配参数的话,当用户刷新当前页面的时候,参数就会消失。
也就是说使用params不在路由配参数跳转,只有第一次进入页面参数有效,刷新页面参数就会消失。

路由守卫钩子函数里面的三个参数
to,from,next 这三个参数:
to和from是将要进入和将要离开的路由对象,路由对象指的是平时通过this.$route获取到的路由对象。
next:Function 这个参数是个函数,且必须调用,否则不能进入路由(页面空白)。
next() 进入该路由。
next(false): 取消进入路由,url地址重置为from路由地址(也就是将要离开的路由地址)。 next 跳转新路由,当前的导航被中断,重新开始一个新的导航。

路由守卫:
路由守卫分为3种
1、全局的路由守卫

无论跳转哪个页面都会触发钩子函数

2、组件级的

知道跳转该组件才会触发钩子函数

3、单个路由独享的

只有访问到这个路径,才能触发钩子函数

全局的路由守卫有

router.beforeEach 进入路由之前
router.beforeResolve 全局解析守卫(2.5.0+)在beforeRouteEnter调用之后调用
router.afterEach 进入路由之后
组件级的路由守卫有

beforeRouteEnter 路由跳转进入之前
beforeRouteUpdate(2.2新增) 页面参数更新时触发
beforeRouteLeave 离开这个路由触发
单个路由独享的守卫

beforeEnter只有访问到这个路径,才能触发钩子函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值