第5章 管理端(Vue)布局面的重构与路由的全局存储

news2024/11/20 20:39:41

1 重构路由:src\router\index.js

import {

    createRouter,

    createWebHashHistory

} from 'vue-router'

import HomeView from '../views/HomeView.vue'

//注意:path属性所对应的字符串不能与“*.vue”文件名相同否则会出现错误。

const routes = [{

        path: '/Login',

        name: '登录',

        component: () => import('../views/LoginView.vue')

    },

    {

        path: '/',

        name: 'Admin',

        component: () => import('../components/AdminLayoutComponen.vue'),

        children: [{

                path: '/',//默认启动页,默认加载子路径与父路径相同的情况下会自动加载。

                name: '欢迎',

                icon: "HomeFilled",

                menuId: '1',

                component: () => import('../views/WelcomeView.vue'),

            },

            {

                path: '/Test',

                name: '测试',

                icon: "Setting",

                menuId: '2',

                component: () => import('../views/TestView.vue'),

            },

            {

                path: '/Test-1',

                name: '测试-1',

                icon: "Setting",

                menuId: '3',

                component: () => import('../views/Test-1View.vue'),

            },

            {

                path: '/Test-2',

                name: '测试-2',

                icon: "Setting",

                menuId: '4',

                component: () => import('../views/Test-2View.vue'),

            },

            {

                path: '/',

                name: '用户管理',

                icon: "User",

                menuId: '5',

                children: [{

                        path: '/Users/User',

                        name: '用户',

                        menuId: '5-1',

                        component: () => import('../views/Users/UserView.vue'),

                    },

                    {

                        path: '/Users/UserDetail',

                        name: '用户详情',

                        menuId: '5-2',

                        component: () => import('../views/Users/UserDetailView.vue'),

                    },

                    {

                        path: '/Users/Role',

                        name: '角色',

                        menuId: '5-3',

                        component: () => import('../views/Users/RoleView.vue'),

                    },

                    {

                        path: '/Users/RoleDetail',

                        name: '角色详情',

                        menuId: '5-4',

                        component: () => import('../views/Users/RoleDetailView.vue'),

                    },

                ]

            },

            {

                path: '/Hello',

                name: 'Hello',

                icon: "Menu",

                menuId: '6',

                component: () => import('../components/HelloWorld.vue'),

            },

            {

                path: '/Test-3',

                name: '测试-3',

                icon: "Setting",

                menuId: '7',

                component: () => import('../views/Test-3View.vue'),

            },

        ]

    },

    {

        path: '/home',

        name: 'home',

        component: HomeView,

    },

    {

        path: '/about',

        name: 'about',

        component: () => import('../views/AboutView.vue'),

    }

]

const router = createRouter({

    history: createWebHashHistory(),

    routes

})

// 如果路由实例中有标题实例,依次把标题渲染显示在浏览器相对应的标签上。

//to: 当前跳转到页面的路由实例。

router.beforeEach(async (to) => {

    if (to.name) {

        document.title = to.name;

    }

});

export default router

2定义管理端布局组件页:src\components\AdminLayoutComponen.vue

<template>

    <el-container>

        <!-- 侧边栏 "<div class="aside">标签可被删除,为了下拉条控件样式保存了该标签"-->

        <div class="aside">

            <el-aside width="200px">

                <!--必须包含有:"el-menu"标签,否则左侧菜单栏的高度不能达到100% -->

                <el-menu

                    active-text-color="#ffd04b"

                    background-color="#545c64"

                    class="el-menu-vertical-demo"

                    text-color="#fff"

                    default-active="1"

                    router>

                    <template v-for="(item, index) in menuList" :key="index">

                        <el-sub-menu

                            v-if="item.children && item.children.length"

                            :index="item.menuId" >

                            <template #title>

                                <el-icon>

                                    <component :is="item.icon"></component>

                                </el-icon>

                                <span>{{item.name}}</span>

                            </template>

                            <el-menu-item

                                v-for="(children, index) in item.children"

                                :key="index"

                                :route="{path:children.path}"

                                :index="children.menuId" >

                                {{children.name}}

                            </el-menu-item>

                        </el-sub-menu>

                        <el-menu-item

                            v-else

                            :route="{path:item.path}"

                            :index="item.menuId" >

                            <el-icon>

                                <component :is="item.icon"></component>

                            </el-icon>

                            <span>{{item.name}}</span>

                        </el-menu-item>

                    </template>

                </el-menu>

            </el-aside>

        </div>

        <el-container>

            <el-header>Header</el-header>

            <el-main>

                <router-view></router-view>

            </el-main>

            <el-footer>Footer</el-footer>

        </el-container>

    </el-container>

</template>

<script>

    import router from '../router/index.js'

    export default {

        data() {

            return {

                //对所有后台管理路由实例进行存储,为左侧菜单栏的渲染显示提供数据支撑。

                menuList: {},

            };

        },

        methods: {

            getAllMenu() {

                this.menuList = this.$router.options.routes.find(route => route.path === "/").children;

            },

        },

        mounted() {

            this.getAllMenu();

            console.log(router.options.routes.find(route => route.path === "/"));

            console.log(JSON.stringify(router.options.routes.find(route => route.path === "/")));

           

            //“JSON”编码格式把所有后台管理路由实例进行全局存储(Vuex=store)

            if(window.localStorage.router!=null)

                window.localStorage.router=null;

            console.log(window.localStorage.router);

            window.localStorage.router=JSON.stringify(router.options.routes.find(route => route.path === "/"))

            console.log(window.localStorage.router);

        },

    }

</script>

<style scoped lang="scss">

    .aside {

        width: 200px;

        overflow: hidden;

        background-color: #545c64;

    }

    .el-aside {

        height: 100%;

        //overflow-x: hidden;

        //overflow-y: scroll;

    }

    .el-header {

        background-color: #ff0000;

        color: #FFFFFF;

    }

    .el-main {

        height: 90vh; //必须定义:"height"为:90vh,否则主区域的高度不能达到100%;如果大于90vh整页的调度将超过100%

    }

    .el-footer {

        background-color: #0000ff;

        color: #FFFFFF;

    }

    //必须定义:".el-menu"样式,否则左侧菜单栏的高度不能达到100%

    .el-menu {

        height: 90vh; //必须定义:"height"为:90vh,否则左侧菜单栏的高度不能达到100%;如果大于90vh整页的调度将超过100%

    }

   

    .el-menu .el-menu-item.is-active {

        background-color: #000000;

        font-weight: 900;

        font-size: 120%;

    }

</style>

对以上功能更为具体实现和注释见221223_002shopvue(管理端(Vue)布局面的重构与路由的全局存储)。

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

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

相关文章

https搭建-基于phpstudy+openssl实现https网站搭建

目录 一、前言 1.https简介 2.生成ssl证书 二、下载安装phpstudy 1.下载phpstudy 2.启动phpstudy 三、利用openssl证书搭建https 1.进行phpstudy的配置https 2.把CA自签名证书导入受信任的根证书中 3.更改主机host文件 一、前言 1.https简介 HTTPS &#xff0c;是以…

扫雷游戏的设计——大型程序的设计思路

目录 &#x1f33a;了解扫雷游戏的作用原理并梳理思路 &#x1f33a;扫雷游戏前期部分完善 &#x1f337;文件的创建 &#x1f337;创建菜单&#xff0c;完善主函数 &#x1f333;代码呈现&#xff1a; &#x1f33a;扫雷游戏主题内容 &#x1f335;第一步初始化棋盘 &#x1…

CSDN博客运营团队2022年H2总结

前言 在2022年的年中&#xff0c;我们对外公布了我们的年中盘点&#xff1a;2022年上半年部分团队的总结 我们希望尽可能的公开我们的工作内容&#xff0c;让更多人可以了解CSDN的变化&#xff0c;同时也希望收到大家的真实反馈&#xff1a;你期待的新功能上线了吗&#xff1…

创建react项目

1.安装Node.js:官网Node.js下载 2.检查安装 3.命令安装&#xff1a;cnpm:npm install -g cnpm --registryhttps://registry.npm.taobao.org(cnpm比较快) 4.查cnpm安装是否成功&#xff1a;命令&#xff1a;cnpm -v 5.react脚手架安装命令&#xff1a;cnpm i -g create-react…

深度!用“极速统一”,开启金融行业数据分析新范式

作者&#xff1a;51CTO 赵立京 数据库作为金融信息系统的核心基础设施&#xff0c;历经数十年发展&#xff0c;为金融行业转型升级提供了有力的技术支撑。同时&#xff0c; 以银行为代表的金融行业是数据库销售额占比最高的市场&#xff0c;也是对数据库技术依赖度最高、要求最…

写出更现代化的Python代码:聊聊 Type Hint

Type Hint是 Python 3.5 新增的支持&#xff0c;中文可以译为 类型提示。屏幕前的你或许听过&#xff0c;又或许没有。所以今天&#xff0c;让我们一起了解了解。本文基于 Python 3.10.4&#xff0c;部分代码需要在 Python 3.10.0 及以上运行&#xff0c;原因在后续文章中会有说…

kali系统渗透window实现屏幕监控

1安装 VMware15.5,kali系统&#xff0c;桥接模式 链接&#xff1a;https://pan.baidu.com/s/1Y3ftPnzCj0NaMQNDAhIUjw 提取码&#xff1a;3k2w 2修改sshd_config vim /etc/ssh/sshd_config 去掉这两行注释 完成后保存 esc : wq! 重启SSH服务 /etc/init.d/ssh restart Fina…

一文看懂Linux内核页缓存(Page Cache)

我们知道文件一般存放在硬盘&#xff08;机械硬盘或固态硬盘&#xff09;中&#xff0c;CPU 并不能直接访问硬盘中的数据&#xff0c;而是需要先将硬盘中的数据读入到内存中&#xff0c;然后才能被 CPU 访问。 由于读写硬盘的速度比读写内存要慢很多&#xff08;DDR4 内存读写…

C语言期末集训3(大一,超基础,小猫猫大课堂配套练习)——循环结构

更新不易&#xff0c;麻烦多多点赞&#xff0c;欢迎你的提问&#xff0c;感谢你的转发&#xff0c; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我…

[第十二届蓝桥杯/java/算法]F——时间显示

&#x1f9d1;‍&#x1f393;个人介绍&#xff1a;大二软件生&#xff0c;现学JAVA、Linux、MySQL、算法 &#x1f4bb;博客主页&#xff1a;渡过晚枫渡过晚枫 &#x1f453;系列专栏&#xff1a;[编程神域 C语言]&#xff0c;[java/初学者]&#xff0c;[蓝桥杯] &#x1f4d…

五步法搞定BI业务需求梳理

五步法搞定BI业务需求梳理。高手就是把复杂的事情简单化&#xff0c;简单的东西重复做、认真做。 五步法是哪五步 第一&#xff0c; 明确用户。商业智能BI项目的规划一切以用户需求为导向&#xff0c;首先需要明确各层次的需求用户。用户都不能明确&#xff0c;调研的入口就没…

前端工程化与 webpack:webpack 的基本使用

1. 什么是 webpack 概念&#xff1a;webpack 是前端项目工程化的具体解决方案。 主要功能&#xff1a;它提供了友好的前端模块化开发支持&#xff0c;以及代码压缩混淆、处理浏览器端 JavaScript 的兼容性、性 能优化等强大的功能。 好处&#xff1a;让程序员把工作的重心放…

自动控制原理笔记-信号流图-Mason公式-控制系统的传递函数

目录 信号流图与结构图的比较&#xff1a; 掌握结构图与信号流图的转换&#xff1a; Mason增益公式&#xff1a; 式子详解&#xff1a; 使用Mason增益公式步骤&#xff1a; 使用Mason增益公式的例题&#xff1a; ​编辑 控制系统的传递函数 &#xff1a; 开环传递函数…

当红齐天再捧“绽放杯”金奖:全流程算力网络夯实元宇宙“底座”

近日&#xff0c;由工信部主办的第五届“绽放杯”5G应用征集大赛在深圳落幕。本届大赛以“5G赋能数字化&#xff0c;扬帆助力新征程 ”为主题&#xff0c;超7000家单位的2.8万个项目参赛&#xff0c;共享5G赋能实体经济的新技术、新成果。英特尔联合行业合作伙伴再获佳绩。 其…

java ssm热带水果网上商城系统--

目录 第一章 绪论 5 1.1 研究背景 5 1.2系统研究现状 5 1.3 系统实现的功能 6 1.4系统实现的特点 6 1.5 本文的组织结构 6 第二章开发技术与环境配置 7 2.1 Java语言简介 7 2.2JSP技术 8 2.3 MySQL环境配置 8 2.4 MyEclipse环境配置 9 2.5 mysql数据库介绍 9 2.6 B/S架构 9 第三…

Matter理论介绍-通用-1-06:桥接设备-其他功能

【源码、文档、软件、硬件、技术交流、技术支持&#xff0c;入口见文末】 【所有相关IDE、SDK和例程源码均可从群文件免费获取&#xff0c;免安装&#xff0c;解压即用】 持续更新中&#xff0c;欢迎关注&#xff01; 一、桥接设备的功能更新 桥接设备能够独立与桥接器进行软…

一文带你快速搭建框架(最全MyBatis笔记修改篇)

前言&#xff1a;最近收到小伙伴们的私信说这一篇有点问题&#xff0c;因为我是用Typora搬运笔记没考虑到这个问题&#xff0c;感谢这个小伙伴反映的问题~ 目录 一.概述 1.简介 2.maven构建 二.相关概念 1.Mapper接口 2.ORM思想 三.映射配置文件 1.文件结构 2.映射配…

31. 填充和步幅的代码实现

1. 填充 我们创建一个高度和宽度为3的二维卷积层&#xff0c;并在所有侧边填充1个像素。给定高度和宽度为8的输入&#xff0c;则输出的高度和宽度也是8。 import torch from torch import nn# 为了方便起见&#xff0c;我们定义了一个计算卷积层的函数。 # 此函数初始化卷积层…

互异数

这道题是实验舱举办的"编程一小时"千人马拉松竞赛的第三题! 目录 #C、互异数 题目描述 输入格式 输出格式 输入样例1 输出样例1 输入样例2 输出样例2 数据规模 思路: 1.最大互质数 2.互质数的数量 3.贪心策略 总代码: 总结: 题目链接: #C、互异数 题目…

Typora使用之在腾讯云建立远程图床【多图】

1 安装PicGo PicGo是一款功能非常强大的图床的工具&#xff0c;支持SM.MS、腾讯COS、GitHub图床、七牛云图床、Imgur图床、阿里云OSS等多种图床平台。 下载地址&#xff1a;https://github.com/Molunerfinn/PicGo/releases 一般安装PicGo-Setup-2.3.0-beta.7-ia32.exe。 可以选…