从0到1完成一个Vue后台管理项目(八、Menu改造完善、子组件创建、配置路由)

news2024/11/17 8:21:09

往期

从0到1完成一个Vue后台管理项目(一、创建项目)

从0到1完成一个Vue后台管理项目(二、使用element-ui)

从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库)

从0到1完成一个Vue后台管理项目(四、引入axios、配置路由)

从0到1完成一个Vue后台管理项目(五、登录页(表单校验的使用和封装))

从0到1完成一个Vue后台管理项目(五、登录页,mock,token,axios封装)

从0到1完成一个Vue后台管理项目(六、404页)

从0到1完成一个Vue后台管理项目(七、Header、Footer、页面布局)

引入element-ui导航布局

代码

<template>
  <div class="menu">
    <el-aside width="200px">
      <el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#2578b5" text-color="#fff" active-text-color="#ffd04b">
        <el-submenu index="1">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span>导航一</span>
          </template>
          <el-menu-item-group>
            <template slot="title">分组一</template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
          </el-menu-item-group>
          <el-menu-item-group title="分组2">
            <el-menu-item index="1-3">选项3</el-menu-item>
          </el-menu-item-group>
          <el-submenu index="1-4">
            <template slot="title">选项4</template>
            <el-menu-item index="1-4-1">选项1</el-menu-item>
          </el-submenu>
        </el-submenu>
        <el-menu-item index="2">
          <i class="el-icon-menu"></i>
          <span slot="title">导航二</span>
        </el-menu-item>
        <el-menu-item index="3" disabled>
          <i class="el-icon-document"></i>
          <span slot="title">导航三</span>
        </el-menu-item>
        <el-menu-item index="4">
          <i class="el-icon-setting"></i>
          <span slot="title">导航四</span>
        </el-menu-item>
      </el-menu>
    </el-aside>
  </div>
</template>


<script>
export default {
  data() {
    return {}
  },
  methods: {
    handleOpen(key, keyPath) {
      console.log(key, keyPath)
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath)
    }
  }
}
</script>


<style lang="scss" scoped>
.menu {
  .el-aside {
    height: 100%;
    .el-menu {
      height: 100%;
      .el-submenu .el-menu-item {
        min-width: 0;
      }
    }
  }
}
</style>

展示
在这里插入图片描述
这样我们就得到了一个常规的后台管理布局

改造

我们稍微改造一下,删除多余的代码
在这里插入图片描述
结果
在这里插入图片描述

添加Menu子组件

我们的Menu菜单,点开每一下,右侧会展示对应内容,所以毫无疑问,我们的Menu是需要子组件的

components下建立如图所示的文件夹和.vue组件,并初始化一下

在这里插入图片描述

配置路由

我们要给对应的子组件配置对应的路由

import { Icon } from "element-ui";
import Vue from "vue";
import Router from "vue-router";


Vue.use(Router)


export default new Router({
  routes: [
    {
      path: '/',
      redirect: '/login',
      component: () => import('@/components/Login')
    },
    {
      path: '/login',
      name: 'Login',
      component: () => import('@/components/Login')
    },
    {
      path: '*',
      name: 'NotFound',
      component: () => import('@/components/404.vue')
    },
    // {
    //   path: '/home',
    //   // component: () => import('@/components/Home')//路由懒加载
    //   component: resolve => require(['@/components/Home'], resolve)
    // },
    {
      path: '/home',
      name: '学生管理',
      iconClass: 'fa fa-users',
      redirect: '/home/student',
      component: () => import('@/components/Home'),
      children: [
        {
          path: '/home/student',
          name: '学生列表',
          iconClass: 'fa fa-list',
          component: () => import('@/components/students/StudentList')
        },
        {
          path: '/home/info',
          name: '信息列表',
          iconClass: 'fa fa-list-alt',
          component: () => import('@/components/students/InfoList')
        },
        {
          path: '/home/infos',
          name: '信息管理',
          iconClass: 'fa fa-list-alt',
          component: () => import('@/components/students/InfoLists')
        },
        {
          path: '/home/work',
          name: '作业列表',
          iconClass: 'fa fa-list-ul',
          component: () => import('@/components/students/WorkList')
        },
        {
          path: '/home/works',
          name: '作业管理',
          iconClass: 'fa fa-th-list',
          component: () => import('@/components/students/WorkMent')
        },
      ]
    },
    {
      path: '/home',
      name: '数据分析',
      iconClass: 'fa fa-bar-chart',
      component: () => import('@/components/Home'),
      children: [
        {
          path: '/home/dataview',
          name: '数据概览',
          iconClass: 'fa fa-line-chart',
          component: () => import('@/components/dataAnalysis/DataView')
        },
        {
          path: '/home/mapview',
          name: '地图概览',
          iconClass: 'fa fa-line-chart',
          component: () => import('@/components/dataAnalysis/MapView')
        },
        {
          path: '/home/travel',
          name: '旅游地图',
          iconClass: 'fa fa-line-chart',
          component: () => import('@/components/dataAnalysis/TravelMap')
        },
        {
          path: '/home/score',
          name: '分数地图',
          iconClass: 'fa fa-line-chart',
          component: () => import('@/components/dataAnalysis/ScoreMap')
        },
      ]
    },
    {
      path: '/users',
      name: '用户中心',
      iconClass: 'fa fa-user',
      component: () => import('@/components/Home'),
      children: [
        {
          path: '/users/user',
          name: '权限管理',
          iconClass: 'fa fa-user',
          component: () => import('@/components/users/User')
        }
      ]
    }
  ],
  mode: 'history'
})

这里的iconClass是为了给我们的菜单项配置对应的图标

改造Menu.vue

在这里插入图片描述

我们打印可以发现路由的信息已经存在了

在这里插入图片描述
在这里插入图片描述
我们根据路由进行菜单项渲染
在这里插入图片描述

我们发现已经显示出来了
但是有的不是我们想要的,比如404,怎么办

hidden:true

我们在路由添加hidden:true的配置项,然后在Menu设置v-if即可

在这里插入图片描述

在这里插入图片描述

展示

在这里插入图片描述

显示图标

还记得我们配置的iconClass吗,现在要用了

在这里插入图片描述
展示成功
在这里插入图片描述

配置子组件

我们现在发现,我们点击对应项,子组件的路由没有跟着变化,这就需要我们配置一下
在这里插入图片描述

设置路由出口

在这里插入图片描述
在这里插入图片描述
这样我们内容就可以跟着路由变化了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaweb-拦截器与监听器FilterListener

Filter&Listener 1&#xff0c;Filter 1.1 Filter概述 Filter 表示过滤器&#xff0c;是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。 如下图所示&#xff0c;浏览器可以访问服务器上的…

mybatisPlus3.5.2在NOT_NULL更新策略下自定义Mapper实现更新null值

版本 当前使用的mybatis plus版本如下 mybatis-plus-3.5.2.jar 默认更新配置 在这个更新策略下&#xff0c;调用mybatis基础的updateById等更新方法的时候会因为xml中的判断条件而更新不了null值&#xff0c;此时又不想修改全局的配置策略。 mybatis plus提供了 com.baomid…

LeetCode091之解码方法(相关话题:动态规划)

题目描述 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; A -> "1" B -> "2" ... Z -> "26" 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可能有多种方法…

蓝奥声灯光联动在行业中的技术优势

随着科学技术的发展和人民生活水平的提高&#xff0c;人们对生活或工作的照明系统提出了新的要求&#xff0c;智能照明系统替代传统照明系统是家居智能化过程中必然要走的一步&#xff0c;传统的家居照明控制方式一般是通过电路中的开关来控制电路的导通与关断&#xff0c;开关…

【设计模式】我终于读懂了组合模式。。。

文章目录♈️学校院系展示需求♉️传统方案解决学校院系展示(类图)♐️传统方案解决学校院系展示存在的问题分析♊️组合模式基本介绍♋️组合模式原理类图♌️对原理结构图的说明-即(组合模式的角色及职责)♍️组合模式解决学校院系展示的 应用实例♎️接下来我们Debug下去看一…

【Python】搭建虚拟环境

目录 前言 虚拟环境简介 虚拟环境依赖模块的安装 1、安装好Python环境 2、安装第三方库&#xff08;虚拟环境库&#xff09; 3、 安装第三方模块virtualenvwrapper-win 为虚拟环境配置环境变量 1、配置环境变量 2、点击环境变量 3、在系统变量中&#xff0c;点击新建 …

TOOM网络舆情监控系统定制开发,舆情监控开源系统源码有哪些?

软件系统定制开发是指为满足客户特定业务需求而进行的软件系统开发工作。这通常涉及到对现有软件系统进行修改或开发新的软件系统来满足客户的特定要求。软件系统定制开发可以帮助客户解决其特定的业务问题&#xff0c;并为客户带来独特的竞争优势。TOOM网络舆情监控系统定制开…

安装龙蜥或CentOS 7时出现dracut- initqueue timeout解决方法

在安装龙蜥7.9操作系统时&#xff0c;出现dracut- initqueue timeout-starting…starting timeout scripts报错CentOS 7.9出现此问题也可以参考同样的方法如何制作启动盘和系统盘设置raid就不再赘述了&#xff0c;相关文档社区已经很多了&#xff0c;这里直接入正题一、问题描述…

自己搞个chatgpt机器人

chargpt确实越来越火了&#xff0c;目前来看很多文章都教大家如何去注册chatgpt&#xff0c;并且详细的科普了很多chatgpt种种神奇之处。我实际使用之后&#xff0c;确实也感觉非常奈斯。这里看到很多人用那个go环境的去对接个人微信&#xff0c;因此萌生了做个其他版本的想法。…

2022.12青少年软件编程(Python)等级考试试卷(一级)

2022.12青少年软件编程(Python)等级考试试卷(一级) 一、单选题(共25题,共50分) 1.关于Python语言的注释,以下选项中描述错误的是?( C ) A. Python语言有两种注释方式:单行注释和多行注释 B. Python语言的单行注释以#开头 C. Python多行注释使用###来做为标记 D. …

DPDK:UDP 协议栈的实现

文章目录1、DPDK 原理1.1、用户态驱动 IO1.2、内存池管理2、DPDK 启动设置3、DPDK&#xff1a;UDP 协议栈3.1、代码实现3.2、设置静态 arp4、DPDK&#xff1a;KNI4.1、代码实现4.2、程序测试文章参考<零声教育>的C/Clinux服务期高级架构系统教程学习&#xff1a; 服务器高…

缓存工作模型以及使用Redis为查询接口添加缓存

什么是缓存 缓存就是数据交换的缓冲区&#xff0c;是存储数据的临时地方&#xff0c;一般读写性能较高。在以前CPU需要将内存或磁盘中读到数据放寄存器才可以做运算&#xff0c;正是因此计算机运算的能力受到限制。为了解决&#xff0c;人们在CPU中设计了缓存&#xff0c;将一…

Word处理控件Aspose.Words功能演示:从 Java 中的 Word DOC 中提取图像

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

Minecraft 1.19.2 Fabric模组开发 01.eclipse 开发包构建教程

1.19.2的离线开发包附文末 我们本次来进行Minecraft 1.19.2 Fabric模组开发教程的介绍&#xff0c;首先我们需要下载eclipse和openJDK eclipse下载 eclipse官网下载最新版 openJDK下载 下载最新版JDK 17.028 1.19.2 mdk下载 下载1.19.2MDK 注&#xff1a;1.19.2需要使…

OpenCV实战(6)——OpenCV策略设计模式

OpenCV实战&#xff08;6&#xff09;——OpenCV策略设计模式0. 前言1. 策略设计模式颜色识别1.1 颜色比较1.2 策略设计模式1.3 实现颜色比较1.4 ColorDetector 类1.4 计算两个颜色向量之间的距离2. 使用 OpenCV 函数3. 函子或函数对象4. OpenCV 算法的基类小结系列链接0. 前言…

一文带你攻克JDK新特性

1.Java8 新特性介绍 1.1 实验介绍 在国内&#xff0c;Java8 是当之无愧的普及率最高的 JDK 版本&#xff0c;从笔者工作开始&#xff0c; 就一直使用的是 JDK8 的版本&#xff0c;虽然现在 JDK19 即将面世&#xff0c;但是似乎依旧无法 动摇 JDK8 在国内的地位。这里面最主要…

leetcode-10:还原排列的最少操作步数

原题描述如下&#xff1a; 给你一个偶数 n​​​​​​ &#xff0c;已知存在一个长度为 n 的排列 perm &#xff0c;其中 perm[i] i​&#xff08;下标 从 0 开始 计数&#xff09;。 一步操作中&#xff0c;你将创建一个新数组 arr &#xff0c;对于每个 i &#xff1a; 如…

蓝桥杯-地宫取宝

算法分类&#xff1a; 动态规划 dp 问题描述 X 国王有一个地宫宝库&#xff0c;是 nm 个格子的矩阵&#xff0c;每个格子放一件宝贝&#xff0c;每个宝贝贴着价值标签。 地宫的入口在左上角&#xff0c;出口在右下角。 小明被带到地宫的入口&#xff0c;国王要求他只能向右…

使用DBeaver 连接时序数据库TDengine

介绍 TDengine 是一款高性能、分布式、支持 SQL 的时序数据库 (Database)。 DBeaver 是一款流行、开源的数据库管理工具以及 SQL 客户端&#xff0c;其功能强大&#xff0c;并且支持任何拥有 JDBC-Driver 的数据库&#xff08;这意味着几乎所有数据库都支持&#xff09;。 只…

Java面试常见问题-JVM篇

JVM面试问题汇总①什么是字节码&#xff0c;采用字节码的好处是什么⭐java类加载器有哪些⭐双亲委派模型⭐⭐GC是如何判断对象可以被回收总结了目前主流平台中常见的面试题&#xff0c;标⭐为重点&#xff01; 第一次更新节点&#xff1a;2023.1.8 什么是字节码&#xff0c;采用…