【vue】 vue-antd-admin router使用

vue-antd-admin router使用

  • src/pages 中制作页面 i18n.js国际化 index.js export default 向外暴露的成员,必须严格按照导出时候的名称,来使用{ }按需接收

  • src/router/async/router.map.js 路由组件注册 (login、root不变,折叠)import导入

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZaIuYIm-1656923733472)(vue-ant-admin使用.assets/image-20220612202044610.png)]

  • src/route/config.js 路由配置 截取其中一段分析

    {
      path: '/', //根
      name: '首页',
      component: TabsView,
      redirect: '/login',
      children: [//根下的孩子
        {
          path: 'dashboard',
          name: 'Dashboard',
          meta: {
            icon: 'dashboard'
          },
          component: BlankView,//空白页 显示在空白页
          children: [
            {
              path: 'workplace',
              name: '工作台',
    //meta的定义:简单来说就是路由元信息,也就是每个路由身上携带的信息。
    //meta的作用:vue-router路由元信息说白了就是通过meta对象中的一些属性来判断当前路由是否需要进一步处理,如果需要处理,按照自己想要的效果进行处理即可
              meta: 
                page: {
                  closable: false
                }
              },
              component: () => import('@/pages/dashboard/workplace'),
            },
            {
              path: 'analysis',
              name: '分析页',
              component: () => import('@/pages/dashboard/analysis'),
            }
          ]
        },
    

创建pages

  • 为了区分vue-ant-admin模板页面,文件命名采用首字母大写。

菜品管理 优惠管理 评价管理 数据分析 账本管理 库存管理 订单管理 员工管理 餐桌管理

在这里插入图片描述

  • src/router/async/router.map.js 路由组件注册
const routerMap = {
  home:{
    name: '首页',
    component: () => import('@/pages/Home/home')
  },
  dish:{
    name:'菜品管理',
    component: () => import('@/pages/Dish_mg/dish')
  }
}
export default routerMap
  • src/route/config.js 路由配置
const options = {
routes: [
    {
      path: '/login',
      name: '登录页',
      component: () => import('@/pages/login')
    },
     {
      path: '/',
      name: '首页',
      component: TabsView,
      redirect: '/login',
      children: [
          ==============
          {
          name:'首页',
          path:'home',
          component: () => import('@/pages/Home/home')
        }
          ===============
      ]
   },
]
}

登录跳转到首页

src/pages/login/login.vue 修改Javascript标签中的afterLogin(res)函数

afterLogin(res) {
  this.logging = false
  const loginRes = res.data
  if (loginRes.code >= 0) {
    const {user, permissions, roles} = loginRes.data
    this.setUser(user)
    this.setPermissions(permissions)
    this.setRoles(roles)
    setAuthorization({token: loginRes.data.token, expireAt: new Date(loginRes.data.expireAt)})
    // 获取路由配置
    getRoutesConfig().then(result => {
      const routesConfig = result.data.data
      loadRoutes(routesConfig)
        ========
      this.$router.push('/home')
        ========
      this.$message.success(loginRes.message, 3)
    })
  } else {
    this.error = loginRes.message
  }
}

### 关于 `vue-antd-admin` 的权限管理实现 在 `vue-antd-admin` 中,权限管理系统的设计紧密围绕着 Vue Router 和 Ant Design of Vue 组件库展开。为了确保不同角色的用户能够访问到各自应有的页面并执行特定的操作,该框架采用了基于路由的角色权限控制机制。 #### 路由级别的权限控制 通过自定义指令或守卫函数来拦截用户的请求路径,判断当前登录者是否有权进入所申请的目标视图。对于未授权的情况,则重定向至无权提示页或其他指定位置[^1]。 ```javascript // src/router/index.js 示例片段 import { createRouter, createWebHistory } from 'vue-router'; const routes = [ { path: '/', component: () => import('@/views/layout/Index'), children: [ { path: '', name: 'home', meta: { title: '首页', icon: 'dashboard' }, component: () => import('@/views/home') } ] } ]; const router = createRouter({ history: createWebHistory(), routes, }); router.beforeEach((to, from, next) => { const hasPermission = checkUserPermissions(to.meta.requiredAuth); if (!hasPermission && to.meta.requiresAuth) { next({ name: 'unauthorized' }); } else { next(); } }); ``` 此代码展示了如何利用 `beforeEach` 导航守卫来进行简单的权限验证逻辑。当用户尝试跳转到某个带有 `requiresAuth` 属性标记的路由时,会先调用 `checkUserPermissions()` 方法检查是否满足条件;如果不符则转向名为 `'unauthorized'` 的错误页面[^2]。 #### 动态加载菜单与按钮级权限 除了上述全局性的路由保护外,在实际应用开发过程中还经常涉及到更细粒度的权限设置——即针对具体功能模块内的操作项(如新增、编辑、删除等)。这通常借助于动态渲染技术配合后端API接口返回的数据完成个性化展示: - **菜单栏**:依据用户身份获取对应的导航链接列表; - **表单/表格中的按钮**:根据业务场景决定哪些交互控件应该被隐藏或者禁用状态。 这些细节处理往往需要前端工程师同服务端协作设计合理的数据交换协议以及相应的UI展现策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值