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

目录

  • 一、新建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];
});

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

lora微调大模型Qwen2.5_32B

最近有在尝试用lora微调Qwen大模型&#xff0c;在这里主要记录下实践过程。Qwen模型下载可以去魔塔社区&#xff0c;我这里是提前下载好了放在/public/DownloadedModels下。LLamaFactory源码地址&#xff1a;GitHub - hiyouga/LLaMA-Factory: Unified Efficient Fine-Tuning of…

Python 和 Pyecharts 对Taptap相关数据可视化分析

结果展示&#xff1a; 数据来源&#xff1a; Python爬取TapTap 热门游戏信息并存储到数据库&#xff08;详细版&#xff09; 目录 结果展示&#xff1a; 数据来源&#xff1a; Python爬取TapTap 热门游戏信息并存储到数据库&#xff08;详细版 一、引言 二、准备工作 三、…

Atiyah交换代数经典入门教材:Introduction to Commutative Algebra

在上帖中&#xff0c;我分享了Zariski的交换代数教材&#xff1a;Zariski交换代数经典教材Commutative Algebra系列&#xff08;pdf可复制版&#xff09;。其实交换代数方面&#xff0c;除了Zariski的教材&#xff0c;还有Atiyah的Introduction to Commutative Algebra&#xf…

ADAM优化算法与学习率调度器:深度学习中的关键工具

深度学习模型的训练效果离不开优化算法和学习率的选择。ADAM&#xff08;Adaptive Moment Estimation&#xff09;作为深度学习领域中广泛应用的优化算法之一&#xff0c;以其高效性和鲁棒性成为许多任务的默认选择。而学习率调度器则是优化算法的“助推器”&#xff0c;帮助训…

SuperMap Objects组件式GIS开发技术浅析

引言 随着GIS应用领域的扩展&#xff0c;GIS开发工作日显重要。一般地&#xff0c;从平台和模式上划分&#xff0c;GIS二次开发主要有三种实现方式&#xff1a;独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊&#xff0c;其中集成二次开发既可以充分利…

DM达梦管理工具拖出空白区块,无法关闭

1. 出现问题&#xff1a;DM达梦管理工具拖出空白区块&#xff0c;无法关闭。 2. 解决方法 新建查询页&#xff0c;把查询页拖到空白区块里&#xff0c;完全覆盖空白区块。之后空白区块会变成查询页&#xff0c;右上角会出现叉号&#xff0c;点击叉号关闭就行。 3. 后记 达梦…

idea_卸载与安装

卸载与安装 卸载1、设置 -> 应用2、查找到应用&#xff0c;点击卸载3、把删除记录和设置都勾选上4、删除其它几个位置的残留 安装1、下载安装包2、欢迎安装 -> Next3、选择安装目录 -> Next4、创建快捷图标和添加到环境变量5、确认文件夹的名称 -> Install6、完成安…

学习threejs,使用specularMap设置高光贴图

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…

UR开始打中国牌,重磅发布国产化协作机器人UR7e 和 UR12e

近日&#xff0c;优傲&#xff08;UR&#xff09;机器人公司立足中国市场需求&#xff0c;重磅推出UR7e和UR12e 两款本地化协作机器人。它们延续优傲&#xff08;UR&#xff09;一以贯之的高品质与性能特质&#xff0c;着重优化负载自重比&#xff0c;且在价格层面具竞争力&…

2024年陕西科技大学数据结构程序填空题+预测

递归实现插入排序 #include <stdio.h>void insertion_sort(int arr[], int n) {if (n > 1){insertion_sort(arr, n - 1);arr[0] arr[n];int i;for (i n - 1; i > 0; i--){if (arr[i] > arr[0]){arr[i 1] arr[i];}else{break;}}arr[i 1] arr[0];} }int m…

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…

基于PoE交换机的智慧停车场监控组网应用

伴随城市发展快速&#xff0c;汽车保有量也不断增长&#xff0c;导致停车管理问题也愈发凸显。针对包括路侧停车位、地面停车场、地下停车场等场景的停车管理需求&#xff0c;通常会部署监控设备进行车位监测、现场安全监测等&#xff0c;助力构建智能化停车管理。因此如何为分…

直接抄作业!Air780E模组LuatOS开发:位运算(bit)示例

在嵌入式开发中&#xff0c;位运算是一种高效且常用的操作技巧。本文将介绍如何使用Air780E模组和LuatOS进行位运算&#xff0c;并通过示例代码帮助读者快速上手。 一、位运算概述 位运算是一种在计算机系统中对二进制数位进行操作的运算。由于计算机内部数据的存储和处理都是…

多点DMALL启动招股:将在港交所上市,聚焦数字零售服务

近日&#xff0c;多点数智有限公司&#xff08;Dmall Inc.&#xff0c;下称“多点”或“多点DMALL”&#xff09;发布全球发售文件&#xff0c;于11月28日至12月3日招股&#xff0c;预计将于2024年12月6日在港交所主板挂牌上市。 招股书显示&#xff0c;多点DMALL本次全球发售的…

WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法

大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的&#xff0c;也是区域的&#xff0c;甚至是全球的。本地的污染物排放除了对当地造成严重影响外&#xff0c;同时还会在…

离线安装 Docker-IO:详细步骤指南

离线安装 Docker-IO:详细步骤指南 一、准备工作1.1 下载 Docker 离线安装包1.2 准备安装环境1.3 配置防火墙和 SELinux(可选)二、上传和解压离线安装包2.1 上传安装包2.2 解压安装包三、安装 Docker-IO3.1 移动 Docker 文件到系统目录3.2 配置 Docker 服务3.3 赋予服务文件执…

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

作者&#xff1a;陈承 背景 在 2018 年的 2 月&#xff0c;ARMS Java Agent 的第一个版本正式发布&#xff0c;为用户提供无侵入的的可观测数据采集服务。6 年后的今天&#xff0c;随着软件技术的迅猛发展、业务场景的逐渐丰富、用户规模的快速增长&#xff0c;我们逐渐发现过…

【信息系统项目管理师】第3章:信息系统治理 考点梳理

文章目录 3.1 IT 治理3.1.1 IT治理基础3.1.2 IT治理体系3.1.3 IT治理任务3.1.4 IT治理方法与标准 3.2 IT 审计3.2.1 IT审计基础3.2.2 审计方法与技术3.2.3 审计流程3.2.4 审计内容 3.1 IT 治理 IT治理起到重要的统筹、评估、指导和监督作用。 信息技术审计(IT审计)作为与IT治…

DRM(数字权限管理技术)防截屏录屏----ffmpeg安装

提示&#xff1a;ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…

github webhooks 实现网站自动更新

本文目录 Github Webhooks 介绍Webhooks 工作原理配置与验证应用云服务器通过 Webhook 自动部署网站实现复制私钥编写 webhook 接口Github 仓库配置 webhook以服务的形式运行 app.py Github Webhooks 介绍 Webhooks是GitHub提供的一种通知方式&#xff0c;当GitHub上发生特定事…