当前位置: 代码网 > it编程>编程语言>Javascript > Vue3使用Vue Router实现前端路由控制

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

2024年10月28日 Javascript 我要评论
vue3 使用vue router实现前端路由控制首先,我们需要安装vue router。在项目根目录下运行以下命令:npm install vue-router@next安装完成后,我们可以开始编写

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路由控制内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com