Vue——组件内部守卫,全局守卫,路由独享守卫

Vue——组件内部守卫,全局守卫,路由独享守卫:https://blog.csdn.net/chengzhangdewo/article/details/120770798

 

组件内部守卫
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue.js"></script>
<script src="../js/vue-router.js"></script>
</head>

<body>
<div id="app">
<!-- 4.路由的使用 -->
<router-link to="/user/1001">组件一</router-link>
<router-link to="/b">组件二</router-link>
<!-- 为组件加载提供容器/窗口 -->
<!-- 实现了组件之间的动态加载 -->
<router-view></router-view>
</div>
<script>
// 1.注册组件
let com1 = {
data() {
return {
id: null
}
},
template: `
<div>
组件一
{{id}}
</div>
`,
created() {
this.id = this.$route.params.id
// console.log(this.$route);
},
// 定义组件内部的守卫
// 5.1组件内部前置守卫
beforeRouteEnter(to, from, next) {
console.log('路由进入之前', to, from);
// 手动调用next()方法,确保路由跳转继续执行
next()
},
// 5.2组件内部更新守卫
beforeRouteUpdate(to, from, next) {
console.log('路由更新之前', to, from);
this.id = to.params.id
next()
},
// 5.3组件内部后置守卫(离开之前)
beforeRouteLeave(to, from, next) {
console.log('路由离开之前', to, from,);
next()
}
}
let com2 = {
data() {
return {}
},
template: `
<div>
组件二
</div>
`
}
// 2.定义路由
let router = new VueRouter({
routes: [
{
path: '/user/:id',
component: com1,
name: 'user'
},
{ path: '/b', component: com2 }
]
})

let vm = new Vue({
el: '#app',
data: {},
methods: {},
// 3.路由注册
router: router
})
</script>
</body>

</html>
全局守卫
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue.js"></script>
<script src="../js/vue-router.js"></script>
</head>

<body>
<div id="app">
<!-- 4.路由的使用 -->
<router-link to="/user/1001">组件一</router-link>
<router-link to="/b">组件二</router-link>
<!-- 为组件加载提供容器/窗口 -->
<!-- 实现了组件之间的动态加载 -->
<router-view></router-view>
</div>
<script>
// 1.注册组件
let com1 = {
data() {
return {
id: null
}
},
template: `
<div>
组件一
{{id}}
</div>
`,
created() {
this.id = this.$route.params.id
// console.log(this.$route);
}
}
let com2 = {
data() {
return {}
},
template: `
<div>
组件二
</div>
`
}
// 2.定义路由
let router = new VueRouter({
routes: [
{
path: '/user/:id',
component: com1,
name: 'user'
},
{ path: '/b', component: com2 }
]
})
// 5.配置全局守卫
// 5.1配置全局前置守卫
router.beforeEach((to, from, next) => {
console.log('全局前置守卫', to, from);
next()
})
// 5.2配置全局后置守卫
router.afterEach((to, from) => {
console.log('全局后置守卫', to, from);
})


let vm = new Vue({
el: '#app',
data: {},
methods: {},
// 3.路由注册
router: router
})
</script>
</body>

</html>
路由独享守卫
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue.js"></script>
<script src="../js/vue-router.js"></script>
</head>

<body>
<div id="app">
<!-- 4.路由的使用 -->
<router-link to="/user/1001">组件一</router-link>
<router-link to="/b">组件二</router-link>
<!-- 为组件加载提供容器/窗口 -->
<!-- 实现了组件之间的动态加载 -->
<router-view></router-view>
</div>
<script>
// 1.注册组件
let com1 = {
data() {
return {
id: null
}
},
template: `
<div>
组件一
{{id}}
</div>
`,
created() {
this.id = this.$route.params.id
// console.log(this.$route);
}
}
let com2 = {
data() {
return {}
},
template: `
<div>
组件二
</div>
`
}
// 2.定义路由
let router = new VueRouter({
routes: [
{
path: '/user/:id',
component: com1,
name: 'user',
// 5.1配置路由独享守卫
beforeEnter(to, from, next) {
console.log('路由进入之前', to, from);
next()
}
},
{ path: '/b', component: com2 }
]
})

let vm = new Vue({
el: '#app',
data: {},
methods: {},
// 3.路由注册
router: router
})
</script>
</body>

————————————————
版权声明:本文为CSDN博主「chengzhangdewo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chengzhangdewo/article/details/120770798

posted on   byd张小伟  阅读(276)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示