Vue Router activated dectivated路由守卫

144 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

前言

今天来讲一下路由守卫的小知识,在我学习这个的时候一直是一脸懵的状态,其实到现在也是,所以准备更新一篇文章来学习一下

activateddeactivatde是对组件所独有的两个钩子,用于捕获路由组件的激活状态

具体使用方法:

1.activated路由组件被激活时触发

2.deactivared路由组件失败时触发

路由守卫

作用:对路由进行权限控制

分类:全局守卫,独享守卫,组件内守卫

1.全局守卫,meta路由信息源

前置路由守卫

// 全局前置路由守卫:初始话时,每次路由切换前执行
roture.beforeCreate((to.from.next)=>{
	if(to.meta.isAuth){//判断当前路由是否需要进行权限控制
		if(localStorage.getItem('shop')==='login'){//权限控制的具体规则
			next()//放行
		}else{
			alert('无权限查看')
		}
	}else{
		next()//放行
	}
) }

后置路由守卫

// 全局后置路由守卫:初始话时,每次路由切换后执行
roture.afterEach((to.from)=>{
	if(to.meta.title){
		document.title=to.meta.title//修改网页的title
	}else{
		document.title='vue-test'
	}
) }

2.独享守卫

roture.beforeCreate((to.from.next)=>{
		if(localStorage.getItem('shop')==='login'){
			next()//放行
		}else{
			alert('无权限查看')
		}
	}
) }

3.组件内守卫

进入守卫:通过路由规则,进入该组件时被调用

beforRouteEnter(to,from,next){...next()}

离开守卫:通过路由规则,离开该组件时被调用

beforRouteLeave(to,from,next){...next()}

路由的两种工作模式

1.对于与url来说,什么是hash值? 2.has值不会包含在HTTP请求中,即使=:hash值不会带给服务器

3.hash模式

a:地址中永远带着#,不美观

b:若以后将地址通过第三方手机app分享,若app校验比较严格,则地址会被标记为不合法

c:兼容性很好

4.histor模式

a:地址干净,美观

b:兼容性和hash模式相比略差

c:应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题