3.9
This commit is contained in:
parent
c94b8ded42
commit
1ada19f4e4
32
src/main.js
32
src/main.js
@ -22,18 +22,27 @@ const routes = [
|
||||
component:() => import("./pages/nav.vue"),
|
||||
children:[{
|
||||
path:"user",
|
||||
component: () => import("./pages/user.vue")
|
||||
// 自己定义的东西,在路由跳转时用来判断是否允许跳转
|
||||
meta:"user",
|
||||
component: () => import("./pages/user.vue"),
|
||||
// path:"/user",
|
||||
// component: () => import("./pages/user.vue")
|
||||
// 加了'/'就是绝对路径 后面不需要写父级路径 @click="$router.push('/user')"
|
||||
// 不加'/'就是相对路径 后面就需要写父级路径 @click="$router.push('/nav/user')
|
||||
beforeEnter: (to,from,next) => {
|
||||
console.log("这是路由独享守卫")
|
||||
next()
|
||||
// 给特定路由的守卫,如果不加next,则无法跳转到当前页面,在前置导航守卫后被执行
|
||||
}
|
||||
},
|
||||
{
|
||||
path:"/",
|
||||
meta:"index",
|
||||
component: index
|
||||
},
|
||||
{
|
||||
path:"aaa",
|
||||
meta:"aaa",
|
||||
component: () => import("./components/aaa.vue")
|
||||
},
|
||||
],
|
||||
@ -41,24 +50,37 @@ const routes = [
|
||||
]
|
||||
|
||||
const router = new VueRouter({
|
||||
mode:"history",
|
||||
routes // (缩写) 相当于 routes: routes
|
||||
})
|
||||
|
||||
// 这个函数在页面跳转的时候,自动被执行,这就是导航守卫
|
||||
// 这个函数在页面刚要跳转的时候,自动被执行,这就是前置导航守卫
|
||||
router.beforeEach((to,from,next) => {
|
||||
// to中的path显示的是当前的路径
|
||||
console.log(to)
|
||||
// from中的path显示的是跳转到当前路径的之前的路径
|
||||
console.log(from)
|
||||
console.log("这是导航守卫")
|
||||
console.log("这是前置导航守卫")
|
||||
next()
|
||||
// next控制页面的跳转
|
||||
// next()
|
||||
if(to.path != "/nav"){
|
||||
/* if(to.path != "/nav"){
|
||||
console.log("执行next")
|
||||
next()
|
||||
}else{
|
||||
alert("无法访问")
|
||||
}
|
||||
} */
|
||||
})
|
||||
|
||||
// 这个函数在页面准备要跳转的时候,自动被执行,这就是全局解析守卫,在前置导航守卫后被执行
|
||||
router.beforeResolve((to,from,next) => {
|
||||
console.log("这是全局解析守卫")
|
||||
next()
|
||||
})
|
||||
|
||||
// 这个函数在页面完成跳转后,自动被执行,因为已经跳转完了,所以不需要next,叫全局后置钩子
|
||||
router.afterEach(() => {
|
||||
console.log("跳转完成了")
|
||||
})
|
||||
|
||||
new Vue({
|
||||
|
@ -48,6 +48,30 @@
|
||||
<script>
|
||||
export default {
|
||||
name:"navPage",
|
||||
// 在全局解析守卫之前被调用,有独享守卫时在独享守卫后面
|
||||
beforeRouteEnter(to, from, next) {
|
||||
// 在渲染该组件的对应路由被 confirm 前调用
|
||||
// 不!能!获取组件实例 `this`
|
||||
// 因为当守卫执行前,组件实例还没被创建
|
||||
console.log("组件渲染")
|
||||
next()
|
||||
},
|
||||
// 在页面第一次被加载时不会被调用,只有当页面跳转但组件不改变时才被调用,在前置导航守卫后面被调用,有独享守卫时在独享守卫前面
|
||||
beforeRouteUpdate(to, from, next) {
|
||||
// 在当前路由改变,但是该组件被复用时调用
|
||||
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
|
||||
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
|
||||
// 可以访问组件实例 `this`
|
||||
console.log("组件复用")
|
||||
next()
|
||||
},
|
||||
// 当跳转页面时组件不被使用时调用,在前置导航守卫前
|
||||
beforeRouteLeave(to, from, next) {
|
||||
// 导航离开该组件的对应路由时调用
|
||||
// 可以访问组件实例 `this`
|
||||
console.log("组件离开")
|
||||
next()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
BIN
导航守卫.xmind
BIN
导航守卫.xmind
Binary file not shown.
Loading…
Reference in New Issue
Block a user