vue-router以及vue-router的原理

vue-router

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

路由模式:路由分为hash模式与history模式
hash模式:在浏览器中符号的“#”,以及“#"后面的字符称之为hash,不会重新加载页面,即使没有做到对路由的全覆盖,也不会返回404报错

路由传参:query,params,动态路由传参

  • params只能使用name,query可以使用name和path
  • 使用params传参刷新后丢失,而query传参刷新后不会丢失
  • params在地址栏中不会显示,query会显示
  • params可以和动态路由一起使用,query不可以

路由跳转

  • router.push( ):将有记录存放在历史栈中,点击后退,将返回上一级的记录router-link to 就是调用的push
  • router.replace():不会存放历史栈,而是替换了当前的历史可以在router-link中添加replace或router.push对象中添加replace:true 激活当前功能
  • router.go(-3):()里的参数为整数,指的是在历史栈中前进或后退的步数-1为返回上一历史,0为刷新页面,1为返回下一历史

vue的路由守卫

路由守卫主要有全局守卫,路由独享守卫,组件内守卫,每个守卫接收三个参数

  • to:即将要进入的目标路由对象
  • from:当前导航要离开的路由
  • next:钩子函数,里面定义参数,确认下一步路由要做什么

全局守卫

  • router.beforeEach:全局前置守卫 最合适用在判断进入的页面是否需要登录
  • router.beforeResolve:全局解析守卫 在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用
  • router.afterEach:全局后置钩子 一般用来设置动态的请求头 再这里next()是多余的

组件内的守卫

  • beforeRouteEnter: 进组组件前的守卫 注意:在这里是拿不到vue的this的,但是可以通过传一个回调给 next来访问组件实例
    next ( vm=> { console.log(vm) } )
    vm就是vue的组件实例
    通常用来禁止用户在还未保存修改前突然离开。该导航可以通过 next(false) 来取消
  • beforeRouteUpdate:路由更新时的守卫
  • beforeRouteLeave:离开组件时的守卫

完整的导航解析流程

  • 在失活的组件里调用 beforeRouteLeave 守卫
  • 调用全局的 beforeEach 守卫
  • 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
  • 在路由配置里调用 beforeEnter
  • 解析异步路由组件
  • 在被激活的组件里调用 beforeRouteEnter
  • 调用全局的 beforeResolve 守卫 (2.5+)。
  • 导航被确认
  • 调用全局的 afterEach 钩子
  • 触发 DOM 更新
  • 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值