Online Judge——【前端项目初始化】项目通用布局开发及初始化

news2024/11/30 15:20:27

目录

  • 一、新建layouts
  • 二、更新App.vue文件
  • 三、选择一个布局(Layout)
  • 四、通用菜单Menu的实现
    • 菜单路由改为读取路由文件
  • 五、绑定跳转事件
  • 六、同步路由到菜单项

一、新建layouts

  • 这里新建一个专门存放布局的布局文件layouts:
    在这里插入图片描述

  • 然后在该文件夹(layouts)下创建BasicLayout.vue文件:
    在这里插入图片描述
    注意,不要忘记<router-view />,对于一个布局来说,我们肯定是希望可以动态的展示不同的页面。只不过是导航栏、底部信息等这些都是由固定区域的,所以才叫固定布局。

之后不要忘记在App.vue文件中引入该布局(BasicLayout.vue

二、更新App.vue文件

在这里插入图片描述
解释:在<template>部分中包含了我们刚刚创建的BasicLayout组件。另外,习惯上使用id="app"包裹整个内容,方面后续页面的渲染(当然使用id="app"来进行标识只是一个习惯而已)。

三、选择一个布局(Layout)

我们在Arco Design官网中选择要layout布局,这里选择了一个上中下的布局
在这里插入图片描述

<a-layout style="height: 400px;">
  <a-layout-header>Header</a-layout-header>
  <a-layout-content>Content</a-layout-content>
  <a-layout-footer>Footer</a-layout-footer>
</a-layout>

将其放入BasicLayout.vue文件中,最终BasicLayout.vue文件更新如下:

<template>
  <div id="basicLayout">
    <a-layout style="height: 400px">
      <a-layout-header class="header">导航栏</a-layout-header>
      <a-layout-content class="content">
        <router />
      </a-layout-content>
      <a-layout-footer class="footer">
        <a href="https://www.lanqiao.cn//" target="_blank">
          Online Judge by ly
        </a>
      </a-layout-footer>
    </a-layout>
  </div>
</template>
<style scoped>
#basicLayout {
}

#basicLayout .header {
  background: red;
  margin-bottom: 16px;
}

#basicLayout .content {
  background: linear-gradient(to right, #eee, #fff);
  margin-bottom: 16px;
}

#basicLayout .footer {
  background: #efefef;
  padding: 16px;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
}
</style>

效果如下:
在这里插入图片描述

四、通用菜单Menu的实现

由于这里菜单的制作有点复杂,所以这里将其抽象成一个公共的组件,创建为为GlobalHeader.vue文件。依然是在Arco Design官网中选择一个Menu:

<a-menu mode="horizontal" theme="dark" :default-selected-keys="['1']">
  <a-menu-item key="0" :style="{ padding: 0, marginRight: '38px' }" disabled>
    <div
      :style="{
        width: '80px',
        height: '30px',
        background: 'var(--color-fill-3)',
        cursor: 'text',
      }"
    />
  </a-menu-item>
  <a-menu-item key="1">Home</a-menu-item>
  <a-menu-item key="2">Solution</a-menu-item>
  <a-menu-item key="3">Cloud Service</a-menu-item>
  <a-menu-item key="4">Cooperation</a-menu-item>
</a-menu>

之后,加入logo图片,并设置css样式:
在这里插入图片描述
效果如下:
在这里插入图片描述

现在将菜单根据路由文件动态生成(什么是路由:访问不同的地址会加载不同的页面),即菜单上的路由改为读取路由文件(router中的index.ts,由脚手架自动生成),从而实现更通用的动态配置。
在这里插入图片描述

那么如何实现上述更通用的动态配置的,下面我们来一步一步实现。

菜单路由改为读取路由文件

我们知道,脚手架已经自动生成了一个路由文件,但是其中的routes路由是定义在index.ts文件中,如下:
在这里插入图片描述

在这里插入图片描述

下面我们一步步进行实现

  • 第一步:在router文件中新建一个routes.ts文件
  • 第二步:提取通用路由文件(在index.js中),提取之后直接在新建的routes.ts文件中导入即可。如下
    在这里插入图片描述
    现在路由文件就可以为菜单项提供服务了。
    在这里插入图片描述
    在这里插入图片描述
  • 第三步:修改GlobalHeader.vue文件,如下:
    在这里插入图片描述
// 核心代码
<a-menu-item v-for="item in routes" :key="item.path">
  {{ item.name }}
</a-menu-item>

解释:上述代码使用了Arco Design Vue中的<a-menu-item>组件来动态生成菜单项。

效果如下:
在这里插入图片描述
可以显示高亮,但是并不进行页面的跳转

五、绑定跳转事件

现在我们进行事件的绑定。
在这里插入图片描述
在这里插入图片描述
效果演示:
在这里插入图片描述

现在,已经能够根据点击路由跳转到对应的页面,但是如果能够根据当前的页面地址激活页面对应的状态(即同步路由到菜单项)。

六、同步路由到菜单项

修改GlobalHeader.vue文件。关键代码如下:

const router = useRouter();
const selectedKeys = ref(["/"]); // 默认主页

router.afterEach((to, from, failure) => {
  selectedKeys.value = [to.path];
});

至此,通用菜单到这里就完成了。

梳理下思路:首先点击菜单项=>跳转更新路由=>更新路由后,同步去更新菜单栏的高亮状态(即使刷新页面也会保持当前菜单项的高亮状态)。

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

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

相关文章

uniapp首页样式,实现菜单导航结构

实现菜单导航结构 1.导入字体图标库需要的文件 2.修改引用路径iconfont.css 3.导入到App.vue中 <style>import url(./static/font/iconfont.css); </style>导航区域代码 VUE代码 <template><view class"home"><!-- 导航区域 --><…

《代码随想录》刷题笔记——栈与队列篇【java实现】

文章目录 用栈实现队列用队列实现栈有效的括号我的解法代码随想录 删除字符串中的所有相邻重复项我的解法代码随想录栈解法字符串充当栈※双指针 逆波兰表达式求值我的解法代码随想录 滑动窗口最大值我的解法暴力解法暴力解法一点优化单调队列 代码随想录单调队列 前 K 个高频元…

STM32 ADC --- 知识点总结

STM32 ADC — 知识点总结 文章目录 STM32 ADC --- 知识点总结cubeMX中配置注解单次转换模式、连续转换模式、扫描模式单通道采样的情况单次转换模式&#xff1a;连续转换模式&#xff1a; 多通道采样的情况禁止扫描模式&#xff08;单次转换模式或连续转换模式&#xff09;单次…

UaGateway:实现OPC DA和OPC UA的高效转换

随着工业4.0和智能制造的深入推进&#xff0c;工业自动化系统之间的互联互通需求日益迫切。UaGateway作为一种高效的协议转换工具&#xff0c;正在成为各类工业应用中不可或缺的桥梁。本文将重点介绍UaGateway在实现OPC DA到OPC UA转换方面的主要功能、应用场景和实际案例。 Ua…

安能物流 All in TiDB 背后的故事与成果

导读 在数字化转型的浪潮中&#xff0c;安能物流通过技术创新不断提升物流效率&#xff0c;迈出了全链路 All in TiDB 的重要一步。本文将深入探讨安能物流如何选择 TiDB 作为核心数据库&#xff0c;以应对高并发、数据处理能力和系统可扩展性等挑战。通过 TiDB 的弹性扩展能力…

回声消除延时估计的一些方法

在音频信号处理&#xff0c;尤其是在回声消除和语音通信中&#xff0c;延时估计是一个至关重要的任务。回声消除技术旨在减少或消除在语音通信中由于信号反射而产生的回声。为了有效地实现这一点&#xff0c;系统需要准确估计发送信号和接收信号之间的延迟。通过了解延迟&#…

从简单的自动化脚本到复杂的智能助手:Agent技术的实践与应用

现代软件开发中&#xff0c;Agent技术正在悄然改变着我们构建应用程序的方式。一个Agent就像是一个能独立完成特定任务的智能助手&#xff0c;它可以感知环境、作出决策并采取行动。让我们通过实际案例&#xff0c;深入了解如何运用Agent技术来构建智能系统。 想象你正在开发一…

postman使用正则表达式提取数据实战篇!

之前篇章中postman多接口关联使用的是通过JSON提取器的方式进行提取。 除了JSON提取器提取数据外还可通过另一种方式——正则表达式来提取数据。 1、使用正则表达式提取器实现接口关联&#xff0c;match匹配 正则匹配表达式将需要提取的字段key:value都放入表达式中&#xff…

Flume 与 Kafka 整合实战

目录 一、Kafka 作为 Source【数据进入到kafka中&#xff0c;抽取出来】 &#xff08;一&#xff09;环境准备与配置文件创建 &#xff08;二&#xff09;创建主题 &#xff08;三&#xff09;测试步骤 二、Kafka 作为 Sink数据从别的地方抽取到kafka里面】 &#xff08;…

存储服务器一般做是做什么阵列?详细列举一下

存储服务器通常使用 RAID&#xff08;Redundant Array of Independent Disks&#xff09; 阵列技术来管理磁盘&#xff0c;以提高数据的性能、可靠性和可用性。所选择的 RAID 类型取决于存储服务器的具体用途和需求&#xff0c;比如性能要求、容量需求、容错能力等。 以下是存…

无人机的起降装置:探索起飞和降落的秘密 !

一、起降系统的运行方式 起飞方式 垂直起飞&#xff1a;小型无人机通常采用垂直起飞方式&#xff0c;利用螺旋桨产生的升力直接从地面升起。这种方式适用于空间有限或需要快速起飞的场景。 跑道起飞&#xff1a;大型无人机或需要较长起飞距离的无人机&#xff0c;可能会采用…

代码随想录day01--数组

两数之和 题目 地址&#xff1a;https://leetcode.cn/problems/two-sum/ 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数…

Webpack前端工程化进阶系列(二) —— HMR热模块更新(图文+代码)

前言 之前更新过一篇Webpack文章:Webpack入门只看这一篇就够了(图文代码)&#xff0c;没想到颇受好评&#xff0c;很快就阅读量就破万了hhh&#xff0c;应读者私信的要求&#xff0c;决定继续更新Webpack进阶系列的文章&#xff01; 进入今天的主题 —— HMR 热模块替换(HotM…

Flink的双流join理解

如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL&#xff0c;通过将订单表的id和订单详情表ord…

【MYSQL数据库相关知识介绍】

MySQL 在我们日常技术中是一个广泛使用的开源关系型数据库管理系统&#xff0c;所以作为测试同学&#xff0c;掌握mysql的相关知识是必不可少的技能之一&#xff0c;所以小编从软件测试的角色出发&#xff0c;来整理一些跟测试相关的知识&#xff0c;希望能够帮助到大家。 一、…

数组和链表OJ题

leetcode用编译器调试的技巧 数组和链表练习题 leetcode/reverse_Link/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 1、移除元素 ​​​​​​27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; int removeElement(int* nums, int numsSize, int val) {int src 0, …

云服务器架构有什么区别?X86计算、Arm、GPU/FPGA/ASIC和裸金属全解析

阿里云服务器ECS架构有什么区别&#xff1f;X86计算、Arm计算、GPU/FPGA/ASIC、弹性裸金属服务器和高性能计算有什么区别&#xff1f;x86架构是最常见的&#xff0c;CPU采用Intel或AMD处理器&#xff1b;ARM架构具有低功耗的特性&#xff0c;CPU采用Ampere Altra / AltraMax或阿…

泽众TestCenter测试管理工具之案例库,提升测试工作的效率和质量

在当今的软件开发生命周期中&#xff0c;测试管理工具扮演着至关重要的角色。泽众TestCenter测试管理工具&#xff08;简称TC&#xff09;&#xff0c;作为一款广受好评的测试管理工具&#xff0c;凭借其强大的案例库功能&#xff0c;极大地提升了测试工作的效率和质量。 案例库…

Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway)

Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway) 一、服务网关 1.1 什么是网关 在微服务架构中&#xff0c;服务网关是一个至关重要的组件。它作为系统的入口&#xff0c;负责接收客户端的请求&#xff0c;并将这些请求路由到相应的后端服务…

基于单片机的多功能宠物窝的设计

本设计以STM32主控制器为核心芯片&#xff0c;它的组成元件有电机、温度传感器、时钟模块等。温度传感器的作用是采集环境温度的数据&#xff0c;时钟模块的作用是采集时间。将具体数据进行收集以后&#xff0c;主控制器将所有相关数据予以处理&#xff0c;从而将有关信息传递到…