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

2019-08-07  本文已影响0人  二仙桥啷个走

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

介绍

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

链接地址: vue-element-admin

需求场景

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

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

目录结构

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

//  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
...
image.png
<template>
  <div style="padding:30px;">
    <el-alert :closable="false" title="menu 1">
      <!-- 原则上有多少级路由嵌套就需要多少个<router-view> -->
      <router-view />
    </el-alert>
  </div>
</template>

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

<template>
  <div style="padding:30px;">
    <el-alert :closable="false" title="menu 1-2" type="success">
      <!-- 原则上有多少级路由嵌套就需要多少个<router-view> -->
      <router-view />
    </el-alert>
  </div>
</template>

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

jiesen_s.jpg
上一篇下一篇

猜你喜欢

热点阅读