vue-element-admin 多级目录(嵌套路由)配置

项目中基于vue-element-admin的多级路由配置,这里做一下记录

介绍

vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。

链接地址: vue-element-admin

需求场景

二级路由无法完整且正确表达项目中所展示的内容信息,需要对信息进行进一步细化,使层次显示的更加清晰明了

实现效果类似于这样
image.png

目录结构

由于项目隐私,路由和组件的代码还是用官方例子作为参考,基本都是大同小异

  • 路由结构
    路由这块可以写一个modules文件夹,用于存放二级及以上的路由模块
    image.png

    三级路由结构 官方例子
    这里写了一个nested 的三级路由结构,基于Layout 布局模块,添加了三个children
//  nested.js

/** When your routing table is too long, you can split it into small modules **/

import Layout from '@/layout'

const nestedRouter = {
  path: '/nested',
  component: Layout,
  redirect: '/nested/menu1/menu1-1',
  name: 'Nested',
  meta: {
    title: 'Nested Routes',
    icon: 'nested'
  },
  children: [
    {
      path: 'menu1',
      component: () => import('@/views/nested/menu1/index'), // Parent router-view
      name: 'Menu1',
      meta: { title: 'Menu 1' },
      redirect: '/nested/menu1/menu1-1',
      children: [
        {
          path: 'menu1-1',
          component: () => import('@/views/nested/menu1/menu1-1'),
          name: 'Menu1-1',
          meta: { title: 'Menu 1-1' }
        },
        {
          path: 'menu1-2',
          component: () => import('@/views/nested/menu1/menu1-2'),
          name: 'Menu1-2',
          redirect: '/nested/menu1/menu1-2/menu1-2-1',
          meta: { title: 'Menu 1-2' },
          children: [
            {
              path: 'menu1-2-1',
              component: () => import('@/views/nested/menu1/menu1-2/menu1-2-1'),
              name: 'Menu1-2-1',
              meta: { title: 'Menu 1-2-1' }
            },
            {
              path: 'menu1-2-2',
              component: () => import('@/views/nested/menu1/menu1-2/menu1-2-2'),
              name: 'Menu1-2-2',
              meta: { title: 'Menu 1-2-2' }
            }
          ]
        },
        {
          path: 'menu1-3',
          component: () => import('@/views/nested/menu1/menu1-3'),
          name: 'Menu1-3',
          meta: { title: 'Menu 1-3' }
        }
      ]
    },
    {
      path: 'menu2',
      name: 'Menu2',
      component: () => import('@/views/nested/menu2/index'),
      meta: { title: 'Menu 2' }
    }
  ]
}

export default nestedRouter

然后将其导出,在routes.js里面导入,放到想要放的位置(页面的层次结构根据路由的顺序依次渲染)

// routes.js

import nestedRouter from './modules/nested'
...
/** when your routing map is too long, you can split it into small modules **/
nestedRouter
...
  • 组件结构
    组件的存放位置也要按照多级路由的嵌套规则来建文件夹
    这里还是拿官方例子来看, 最外层是nested然后里面放了两个文件夹menu1menu2
    全部展开结果如下图
    image.png

    这里一级菜单menu1下面还有几个二级菜单menu1-1menu1-2menu1-3,所以在menu1下面新建一个index.vue, 在里面加上
image.png


按照官方的解释,原则上有多少级路由嵌套就需要多少个
所以当二级菜单menu1-2下面还有几个三级菜单menu1-2-1menu1-2-2时,这时候就需要在menu1-2的index.vue里面再添加


然后自己的项目按照这种方式配置,就能实现多级目录(嵌套路由)了。

jiesen_s.jpg

你可能感兴趣的:(vue-element-admin 多级目录(嵌套路由)配置)