Vue3使用Vue Router实现前端路由控制

 更新时间:2024年10月16日 09:56:07   作者:前进的胖子  
在现代Web应用中,前端路由控制是非常重要的一部分,它可以帮助我们将不同的页面内容展示给用户,同时保持用户在浏览不同页面时的连贯性,本文将介绍如何使用Vue Router来实现前端路由控制,需要的朋友可以参考下

Vue3 使用 Vue Router实现前端路由控制

首先,我们需要安装Vue Router。在项目根目录下运行以下命令:

npm install vue-router@next

安装完成后,我们可以开始编写代码了。首先,我们需要导入createRoutercreateWebHistory函数,以及我们自定义的视图组件。

import HomeView from '../views/HomeView.vue'
import AdminView from '@/views/AdminView.vue'
import AboutView from '../views/AboutView.vue'
import ChildenList from '@/views/childenList.vue'

接下来,我们需要创建一个路由实例,并配置我们的路由规则。在这个例子中,我们有三个主页面:首页(HomeView)、关于页面(AboutView)和管理员页面(AdminView)。我们还定义了一个子路由(ChildenList),用于显示关于页面下的子页面。

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: HomeView
    },
    {
      path: '/about',
      name: 'about',
      children: [  
        {  
          path: 'ChildenList',  
          name: 'ChildenList',  
          component: ChildenList,  
          meta: { requiresAuth: true, role: 'admin' }
        }],
      //  component:AboutView,
    },
    {
      path: '/admin',
      name: 'admin',
      component:AdminView,
      meta: { requiresAuth: true, role: 'admin' }
    }
  ]

为了实现权限控制,我们需要在路由守卫中添加一些逻辑。在每个路由规则中,我们可以添加一个meta属性来指定该路由是否需要认证以及对应的角色。在这个例子中,我们为/about/admin路由设置了requiresAuthrole属性

router.beforeEach((to, from, next) => {
  const user = "name" // 假设这是从localStorage获取用户信息的函数
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // 这个路由需要权限
    if (!user || (to.meta.role && user !== to.meta.role)) {
      // 用户未登录或者角色不匹配
      next({ path: '/about'}) // 重定向到登录页面
    } else {
      // 用户已登录且角色匹配
      next()
    }
  } else {
    // 这个路由不需要权限
    next()
  }
})

最后将router导出

export default router

在main.js/main.ts引入

最后挂载routerView用于动态渲染与当前活跃路由匹配的组件

到此这篇关于Vue3使用Vue Router实现前端路由控制的文章就介绍到这了,更多相关Vue3 Vue Router路由控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中的provide/inject的学习使用

    vue中的provide/inject的学习使用

    本篇文章主要介绍了vue中的provide/inject的学习使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Vue实现多图添加显示和删除

    Vue实现多图添加显示和删除

    这篇文章主要为大家详细介绍了Vue实现多图添加显示和删除,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • vue3使用深度选择器修改样式问题

    vue3使用深度选择器修改样式问题

    这篇文章主要介绍了vue3使用深度选择器修改样式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue3 diff算法的简单解刨

    Vue3 diff算法的简单解刨

    如今Vue3的势头正盛,在diff算法方面也做了相应的变化,利用到了最长递增子序列把性能又提升了一个档次。本文就来带大家简单解刨一下Vue3中的diff算法
    2023-02-02
  • Vue移动端项目实现使用手机预览调试操作

    Vue移动端项目实现使用手机预览调试操作

    这篇文章主要介绍了Vue移动端项目实现使用手机预览调试操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Vue实现一个动态添加行的表格步骤详解

    Vue实现一个动态添加行的表格步骤详解

    在Vue组件中定义表格的数据模型,通常使用一个数组来存储表格的数据,每一行数据可以是一个对象,对象的属性对应表格的列,这篇文章主要介绍了Vue实现一个动态添加行的表格步骤详解,需要的朋友可以参考下
    2024-05-05
  • 关于Element-ui中Table表格无法显示的问题及解决

    关于Element-ui中Table表格无法显示的问题及解决

    这篇文章主要介绍了关于Element-ui中Table表格无法显示的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue如何自定义按钮单选和多选

    vue如何自定义按钮单选和多选

    这篇文章主要介绍了vue如何自定义按钮单选和多选问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • nuxt 实现在其它js文件中使用store的方式

    nuxt 实现在其它js文件中使用store的方式

    这篇文章主要介绍了nuxt 实现在其它js文件中使用store的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 解决element-ui el-drawer抽屉el-dialog弹框关闭优化demo

    解决element-ui el-drawer抽屉el-dialog弹框关闭优化demo

    这篇文章主要为大家介绍了解决element-ui el-drawer抽屉el-dialog弹框关闭优化demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-06-06

最新评论