vue_03

news2025/1/11 13:02:37

文章目录

  • 导航菜单功能的实现
    • 在Admin.vue中添加下列代码
      • 布局选择
      • 点击跳转事件
  • vuex的安装及配置
    • 安装
    • 配置
      • 新建store和index.js
      • 在index.js下写如下代码
      • 在main.js中引入store
  • 封装菜单请求工具类
    • 新建menus.js
    • 编写menus.js文件
  • 解决F5刷新数据丢失问题

导航菜单功能的实现

在Admin.vue中添加下列代码

布局选择

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

点击跳转事件

第一步、 在views文件夹下创建Test1.vue 和 Test2.vue
第二步、 在路由的index.js文件中添加路由信息
第三步、 修改Admin.vue中的实例代码

在这里插入图片描述
在这里插入图片描述

<template>
  <div>
    <el-container>
      <el-header>管理员端</el-header>
      <el-container>
        <el-aside width="200px">
          <!--router 路由渲染模式    v-for循环  v-if 满足条件才执行下面语句  :index 路由跳转地址  -->
          <el-menu router>
            <el-submenu index="1" v-for="(item,index) in this.$router.options.routes"
                        :key="index" v-if="!item.hidden">
              <template slot="title"><i class="el-icon-location"></i>{{ item.name }}</template>
              <el-menu-item :index="children.path" v-for="(children,index) in item.children">
                {{ children.name }}
              </el-menu-item>
            </el-submenu>
          </el-menu>
        </el-aside>
        <el-main>
          <!--Main 改成了 路由组件-->
          <router-view/>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

在这里插入图片描述

vuex的安装及配置

安装

安装 npm install vuex -S

配置

新建store和index.js

在这里插入图片描述

在index.js下写如下代码

import Vue from "vue"
import Vuex from "vuex"

Vue.use(Vuex);

export default new Vuex.Store({
    state: {
        routes: []
    },

    // 同步执行mutations   异步执行 actions
    mutations: {
        initRoutes(state, data) {
            state.routes = data;
        }
    }
})

在这里插入图片描述

在main.js中引入store

在这里插入图片描述
在这里插入图片描述

封装菜单请求工具类

新建menus.js

在这里插入图片描述

编写menus.js文件

import {getRequest} from "@/utils/api"


export const initMenu = (router, store) => {
    // 如果 vuex的store中有数据了 就不用请求后台了
    if (store.state.routes.length > 0) {
        return;
    }

    getRequest('/').then(data => {
        if (data) {
            // 格式化好的 Router
            let fmtRoutes = formatRoutes(data);
            // 添加到router
            router.addRoutes(fmtRoutes);
            // 将数据存入vuex
            store.commit('initRoutes', fmtRoutes);
        }
    })
}


export const formatRoutes = (routes) => {
    let fmtRoutes = [];
    // 循环
    routes.forEach(router => {
        let {
            path,
            component,
            name,
            iconCls,
            children,
        } = router;
        // 如果孩子里面是个数组
        if (children && children instanceof Array) {
            // 递归
            children = formatRoutes(children);
        }
        let fmRouter = {
            path: path,
            name: name,
            iconCls: iconCls,
            children: children,
            // 格式化
            component(resolve) {
                // 因为views下有很多的包  且包中前几个 字母都一样  是包名的首字母大写
                if (component.startsWith('Stu')) {
                    require(['../views/stu/' + component + '.vue'], resolve);
                } else if (component.startsWith('Admin')) {
                    require(['../views/' + component + '.vue'], resolve);
                }
            }
        }
        fmtRoutes.push(fmRouter);
    });
    return fmtRoutes;
}

解决F5刷新数据丢失问题

在 main.js 中添加下列代码

// 路由导航守卫
router.beforeEach((to, from, next) => {
    // // to 要跳转的路由
    // console.log(to);
    // // from 从哪个路由跳转过来的
    // console.log(from);
    // // 没有next() 不会真正跳转
    // next();

    // 如果登录了就初始化菜单
    if (window.sessionStorage.getItem('tokenStr')) {
        initMenu(router, store);
        next();
    } else {
        // // 如果是登录页 就跳转
        // if (to.path == '/') {
        //     next();
        // }
        next();
    }
})

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

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

相关文章

多项开发任务,如何做好任务分配和管理?

1、确定任务清单 任务精细化分解 需要将任务进行精细化分解&#xff0c;每个子任务时间最好不超过一周&#xff0c;明确子任务的目标、时间点和交付物。 多项开发任务&#xff0c;如何做好任务分配和管理&#xff1f; 2、优先级排序 需要将精细化好的任务&#xff0c;进行优先级…

TFTP+Filezilla文件双向传输(2)-ubuntu(VMware)-win10(host)

TFTP&#xff08;Trivial File Transfer Protocol,简单文件传输协议&#xff09;是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。端口号为69。 ftpd-hpa是tftp服务器 tftp-hpa是tftp客服端 inetd的全称…

设计尝试用Microsoft Visual Studio 在网络上架构一个电影院网络订票系统

设计尝试用Microsoft Visual Studio 在网络上架构一个电影院网络订票系统的设计&#xff0c;以使每一位客户不用出门就能看到最新的电影信息和预定电影票。本文从理论和实践两个角度出发&#xff0c;对一个具有数据挖掘功能电影院网络订票系统的设计进行设计与实现分析。随着电…

windows下运行dpdk下的helloworld

打开“本地安全策略”管理单元&#xff0c;在搜索框输入secpol。 打开本地策略->用户权限分配->锁定内存页->添加用户或组->高级->立即查找 输入电脑用户名&#xff0c;选择并添加。点击确定后&#xff0c;重启电脑。 安装内核驱动&#xff0c;下载地址https:…

srm 采购管理系统是如何赋能企业降本的?

近年来&#xff0c;随着全球经济的不断发展&#xff0c;企业的竞争也日趋激烈&#xff0c;企业为适应市场需求&#xff0c;加强产品创新和技术升级&#xff0c;加大产品研发和生产投入&#xff0c;然而在新冠肺炎疫情的影响下&#xff0c;许多企业经营出现困境。在这种情况下&a…

基于时间戳和序列号的mac地址生成策略

基于时间戳 基于时间戳生成MAC地址的具体操作步骤如下&#xff1a; 获取设备的出厂日期和时间。一般情况下&#xff0c;这个信息可以在设备的测试报告或者出厂记录中找到。 将设备的出厂日期和时间转换成时间戳格式。时间戳指的是一个从1970年1月1日00:00:00 UTC开始的秒数。…

自动化数据驱动?最全接口自动化测试yaml数据驱动实战,看这一篇就够了

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 我们在做自动化测…

ROS学习第十九节——TF静态坐标变换

1.坐标msg消息 订阅发布模型中数据载体 msg 是一个重要实现&#xff0c;首先需要了解一下&#xff0c;在坐标转换实现中常用的 msg:geometry_msgs/TransformStamped和geometry_msgs/PointStamped 前者用于传输坐标系相关位置信息&#xff0c;后者用于传输某个坐标系内坐标点的…

js面试题

在全局作用域下声明了一个变量 arr, 它的初始值是一个空数组 第二段代码&#xff0c;循环计数器变量i的初始值为0&#xff0c;循环条件是i的值小于2&#xff0c; 也就是说当i的值为0或者1时&#xff0c; 循环条件才能成立 才能够进入到循环体 当i的值为2时循环条件不成立&…

ConcurrentLinkedQueue

唯一一个使用cas实现的线程安全并发效率高的集合。 一、为什么叫松散队列&#xff1f; 链表是松散的&#xff0c;链表节点并不都是有效的&#xff0c;允许存在无效节点valnull&#xff0c;但是只有最后一个节点才能nextnull 为什么线程安全需要把链表做成松散的。就是因为入队…

蓝精灵协会 (The Smurfs‘ Society) 宣布与著名艺术家展开一系列的合作,打造传奇 PFP 系列

4 月 18 日&#xff0c;The Smurfs Society 将推出第一个由 Smurfs 品牌支持的官方 PFP 系列。该系列建立在链上游戏的基础之上&#xff0c;该游戏聚集了超过 85,000 名玩家&#xff0c;并在设计、创意和与著名艺术家的合作方面设立了新标准。 而最近&#xff0c;蓝精灵官方&am…

2023-04-21 学习记录--C/C++-实现升序降序(选择法)

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、选择法 —— 升序 ⭐️ &#xff08;一&#xff09;、思路 从左到右&#xff0c;除最后一个数 依次作为 “当前数” 与 其右…

STM32F4_模数转换器(ADC)详解

目录 1. ADC是什么 2. ADC主要特性 3. ADC框图 3.1 ADC开关控制 3.2 ADC时钟 3.3 通道选择 3.4 单次转换模式和连续转换模式 3.5 时序图 3.6 模拟看门狗 4 温度传感器 5. ADC中断 6. ADC初始化结构体 6.1 ADC相关实验配置 7. 相关寄存器 7.1 ADC控制寄存器&…

Deep Neural Network for YouTube Recommendation论文精读

这篇论文 Deep Neural Networks for YouTube Recommendations 是google的YouTube团队在推荐系统上DNN方面的尝试&#xff0c;发表在16年9月的RecSys会议。本文所介绍的YouTube的推荐系统主要包括Deep Candidate Generation model和Deep Ranking model两个部分&#xff1a;Deep …

AWS EC2使用过程总结

步骤1&#xff1a;开通AWS账号 需要一个邮箱、一个信用卡账号&#xff1b;有第一年的免费试用&#xff0c;EC2每个月免费试用750小时&#xff1b;注册完成后&#xff0c;得到实例管理平台&#xff1a; 步骤2&#xff1a;开通EC2实例 步骤3&#xff1a;开通网关和安全组&…

【Python小技巧】一步到位升级到pandas 2.0.0正式版

文章目录 前言一、Pandas是什么&#xff1f;二、Pandas 2.0.0的升级特性三、升级安装Pandas 2.0.0正式版总结 前言 工欲善其事必先利其器&#xff0c;大数据、AI时代&#xff0c;目前Python 最新版本是3.11 &#xff0c;而Pandas也刚刚完成大升级&#xff0c;进入 2.0.0时代。…

ChatGPT 中的人类反馈强化学习 (RLHF) 实战

目录 1 前言2 人类反馈强化学习 (RLHF)2.1 奖励模型 (RM)2.2 近端策略优化算法 (PPO) 3 总结4 参考 团队博客: CSDN AI小组 相关阅读 ChatGPT 简介大语言模型浅探一关于 ChatGPT 必看的 10 篇论文从 ELMo 到 ChatGPT&#xff1a;历数 NLP 近 5 年必看大模型 1 前言 在当今数字…

整型、浮点型与字符串相互转换(C/C++)

文章目录 1. 整型、浮点型 -> 字符串2. 字符串 -> 整型3.字符串 -> 浮点型 1. 整型、浮点型 -> 字符串 A. 函数原型&#xff1a;   B. 分析  通常整型转换一般都是准确的&#xff0c;但是浮点型进行转换的时候因为精度问题有效数字位可能会出现一些偏差.   C. …

pushmall推贴共享电商2023年4月计划

Pushmall推贴共享电商2023年4月计划 2023年 二月份优化完成 1、商圈套餐卡&#xff1a;商品、优惠券、活动优化&#xff1b; 2、会员预充值一卡通&#xff1a;指定商家会员卡充值优惠&#xff1b; 3、商家海报&#xff1a;店铺海报、商品海报、商圈卡海报优化。 4、首页重新布…

SpringBoot(5)整合缓存

Springboot整合缓存 缓存SpringBoot内置缓存整合Ehcache缓存数据淘汰策略整合Memcached缓存SpringBoot整合jetcache缓存纯远程方案纯本地方案本地远程方案方法缓存远程方案的数据同步数据报表 SpringBoot整合j2cache缓存 缓存 企业级应用主要作用是信息处理&#xff0c;当需要…