Comment implémenter le routage dynamique et les gardes de routage dans Vue
Dans Vue, le routage est un concept très important, lié aux sauts de page, au contrôle des autorisations, etc. Cet article présentera comment implémenter le routage dynamique et les gardes de routage, et donnera des exemples de code spécifiques.
1. Routage dynamique
Le routage dynamique fait référence à la génération de différentes configurations de routage en fonction de différentes conditions ou paramètres. Le routage dynamique de Vue est implémenté à l'aide de Vue Router.
Tout d'abord, nous devons installer Vue Router. Exécutez la commande suivante dans le répertoire racine du projet :
npm install vue-router
Créez un répertoire de routeur dans le répertoire src du projet, et créez un fichier index.js dans le répertoire de configuration du routage.
// router/index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export default new Router({ routes: [] })
Nous pouvons obtenir une configuration de routage dynamique via l'interface backend ou d'autres méthodes, puis l'ajouter à la configuration de routage.
// router/index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ routes: [] }) // 获取动态路由配置 // 假设通过接口获取到的路由数据为response.data const dynamicRoutes = response.data // 添加动态路由 router.addRoutes(dynamicRoutes) export default router
Avec le code ci-dessus, nous pouvons générer dynamiquement des routes basées sur les données renvoyées par l'interface d'arrière-plan et les ajouter à la configuration de Vue Router.
2. Route guard
Route guard peut être utilisé pour contrôler l'accès de l'utilisateur à un certain itinéraire. Par exemple, l'utilisateur doit se connecter avant de pouvoir accéder à une certaine page. Vue Router fournit la fonction de garde de route.
Tout d'abord, nous devons comprendre plusieurs concepts liés aux gardes de route :
Nous pouvons utiliser des gardes globales dans le fichier de configuration de routage (router/index.js). Par exemple, pour implémenter le contrôle des autorisations de connexion :
// router/index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ routes: [] }) // 添加全局前置守卫 router.beforeEach((to, from, next) => { // 判断用户是否登录 const isLogin = localStorage.getItem('isLogin') // 如果用户未登录,并且访问的页面需要登录权限,则跳转至登录页 if (!isLogin && to.meta.requireAuth) { next('/login') } else { next() } }) export default router
Dans le code ci-dessus, nous ajoutons des gardes frontales globales via la méthode router.beforeEach()
. Dans cette garde, nous déterminons si l'utilisateur est connecté et effectuons les sauts correspondants en fonction de différentes situations. router.beforeEach()
方法来添加全局前置守卫。在该守卫中,我们判断用户是否登录,并根据不同情况进行相应的跳转。
除了全局前置守卫外,我们还可以为某个路由单独配置守卫。例如,实现管理员权限控制:
// router/index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ routes: [ { path: '/admin', component: AdminComponent, meta: { requireAdmin: true } // 设置路由元信息 } ] }) export default router
// router/index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ routes: [ { path: '/admin', component: AdminComponent, meta: { requireAdmin: true } // 设置路由元信息 } ] }) // 添加全局前置守卫 router.beforeEach((to, from, next) => { // 判断用户是否为管理员 const isAdmin = localStorage.getItem('isAdmin') // 如果用户不是管理员,并且访问的页面需要管理员权限,则跳转至首页 if (!isAdmin && to.meta.requireAdmin) { next('/') } else { next() } }) export default router
在以上代码中,我们给/admin
路由配置了元信息meta.requireAdmin
// router/index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ routes: [] }) export default router
// App.vue <template> <div> <!-- 页面内容 --> </div> </template> <script> export default { // 组件内的守卫:每次路由切换后滚动到顶部 beforeRouteUpdate(to, from, next) { window.scrollTo(0, 0) next() } } </script>
meta.requireAdmin
pour la route /admin
afin de spécifier que la page nécessite autorisations d'administrateur. Ensuite, utilisez le Front Guard global pour déterminer si l'utilisateur est un administrateur et effectuez le saut correspondant.
Protections à l'intérieur des composants
🎜🎜En plus des protections avant globales et des protections exclusives à l'itinéraire, Vue Router fournit également des protections à l'intérieur des composants. Par exemple, pour contrôler le comportement de défilement de la page : 🎜rrreeerrreee🎜Dans le code ci-dessus, nous utilisons la méthode beforeRouteUpdate() dans le composant App.vue pour faire défiler la page vers le haut après chaque changement d'itinéraire. 🎜🎜Résumé : cet article présente comment implémenter le routage dynamique et les gardes de routage dans Vue, et donne des exemples de code spécifiques. Le routage dynamique peut générer différents itinéraires en obtenant une configuration de routage dynamique. Les gardes d'itinéraire peuvent être utilisés pour contrôler l'accès des utilisateurs à un certain itinéraire, y compris les gardes avant globaux, les gardes exclusifs d'itinéraire et les gardes au sein des composants. La mise en œuvre de ces fonctions est très importante pour créer des applications frontales complexes. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!