Element-UI后台系统首页子路由展示设计

324 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

ElementUI我们常用于开发信息系统,所谓信息系统,也就是区别于普通网站结构,是独立的后台系统,在用户login认证成功后,跳转后的首页一般是左右结构,即左边是竖向导航栏,右边是内容区。那么如何使实现菜单路由显示在内容区呢?

首先,我们在main.js中,引入elementui、axios和vue-router。定义一个path为/index的路由,指向import('@/views/index'),作为系统首页,同时它有三个children子路由,根据路由切换展示在内容区域,其中path为空的即/index打开时展示的子页面,然后通过菜单进行路由的切换user和role。

 import Vue from 'vue'
 import App from './App.vue'
 // 引入Elementui
 import ElementUI from 'element-ui'
 import 'element-ui/lib/theme-chalk/index.css'
 Vue.use(ElementUI)
 ​
 // 引入axios
 import axios from 'axios'
 Vue.prototype.axios = axios
 ​
 // 引入vue-router
 import VueRouter from 'vue-router'
 Vue.use(VueRouter)
 ​
 const router = new VueRouter({
     routes: [{
         path: '/index',
         component: () => import('@/views/index'),
         children: [{
             name: "",
             path: '',
             component: () => import('@/views/desttop')
         }, {
             name: "user",
             path: 'user',
             component: () => import('@/views/user')
         },{
             name: "role",
             path: 'role',
             component: () => import('@/views/role')
         }]
     }, ]
 })
 ​
 Vue.config.productionTip = false
 ​
 new Vue({
     router,
     render: h => h(App),
 }).$mount('#app')
 ​

index.vue使用Element-ui的布局el-container中的左右分栏组件el-asideel-mainel-aside我们引用一个SideBar的侧边栏组件,用于展示竖向菜单。在el-main里配置一个<router-view></router-view>用于展示/index的子路由。

 <template>
     <el-container>
         <el-aside width="200px">
             <SideBar></SideBar>
         </el-aside>
         <el-main>
             <router-view></router-view>
         </el-main>
     </el-container>
 </template>
 ​
 <script>
     import SideBar from '@/components/SideBar'
     export default {
         name: 'index',
         components: {
             SideBar
         }
     }
 </script>
 ​
 <style>
 </style>

siderbar.vue

 <template>
     <el-menu class="el-menu-vertical-demo" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"
         router>
         <el-menu-item index="/index/user">
             <i class="el-icon-menu"></i>
             <span slot="title">用户管理</span>
         </el-menu-item>
         <el-menu-item index="/index/role">
             <i class="el-icon-menu"></i>
             <span slot="title">角色管理</span>
         </el-menu-item>
 ​
     </el-menu>
 </template>
 ​
 <script>
 </script>
 ​
 <style>
 </style>
 ​

最后的效果:

image-20220818131915071