VUE路由Router导航、模式

路由守卫也称为导航守卫,用来对路由导航进行守卫,控制导航的跳转,可以进行权限的控制,分为:

1、全局前置守卫:使用router.beforeEach
2、全局解析守卫:使用router.beforeResolve
3、全局后置钩子:使用router.afterEach

//当一个导航出发时,全局前置守卫将被调用
router.beforeEach((to,from,next) =>{
//to 即将要访问的目标路由对象
//from 来源于哪个路由对象
//next是一个函数,表示下一步咋么做,如:next()表示放行,next('/login')表示跳转到/login路径
})

如果用户登录,就允许用户访问,没有登录就不允许访问。

 index.js

//配置路由守卫
router.beforeEach((to,from,next) =>{
	//如果访问主页,则放行
	if(to.path === '/'){
		return next()
	}
	//如果用户未登陆,则跳转到主页
	const user = sessionStorage.getItem('user')
	if(!user){
		return next('/')
	}
	//如果用户已登陆,则放行
	next()
})

路由的模式:

hash模式(默认)
原理:使用HTML的锚点技术,实现路由匹配和跳转
缺点:地址中会出现#号,比较丑陋

history模式
原理:使用HTML5的History技术
缺点:在生产环境下,如果用户在浏览器中直接访问url会返回404报错
解决:需要后台服务器增加一个覆盖所有情况的候选资源,如果url匹配不到任何静态资源,
则返回同一个页面

//引入
import { createRouter, createWebHasHistory, createWebHistory } from 'vue-router'

//创建路由实例
const router = createRouter({
	//history:createWebHashHistory(),//has模式
  history: createWebHistory(process.env.BASE_URL), //history模式
  routes  //路由配置项,上面配置的routes
})

编程式导航

除了使用<router-link>组件来定义导航链接,还可以通过编写js代码,调用路由实例$router的方法来实现路由跳转,称为
编程式导航

路由实例$router,表示构建路由时的实例对象,主要用来对路由进行控制,称为路由控制对象

该对象为所有组件共享的实例属性,在所有组件中都可以通过this.$router访问,且访问的都是同一个对象
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值