Vue3.5 企业级管理系统实战(七):Sidebar组件开发 1

news/2025/2/21 13:49:11/

现在开始,我们要进行 Sidebar 组件的开发,篇幅和时间原因,本篇先探讨 el-menu 的配置。

1 菜单样式设置

在 src/style/variables.module.scss 中,我们设置菜单样式相关的变量,这些变量将用于后续组件的样式配置。

//src/style/variables.module.scss
$sideBarWidth: 210px;
$navBarHeight: 50px;
$tagsViewHeight: 34px;// 导航颜色
$menuText: #bfcbd9;
// 导航激活的颜色
$menuActiveText: #409eff;
// 菜单背景色
$menuBg: #304156;:export {menuText: $menuText;menuActiveText: $menuActiveText;menuBg: $menuBg;
}

:export 是 CSS 模块中用于在 SCSS 文件导出变量供 JavaScript 使用的规则。在 SCSS 文件里定义变量后,通过 :export 规则块,将变量映射成适合 JavaScript 访问的名称。在支持 CSS 模块的构建工具(如 Vite、Webpack)的 JavaScript 代码中,导入该 SCSS 文件,就能使用这些导出的变量。需注意,导出变量名要遵循 JavaScript 命名规范,且依赖构建工具对 CSS 模块的支持,变量值在构建时确定,运行时无法直接修改。

2 Sidebar 组件开发

2.1. 创建组件文件

在 src/layout/components/Sidebar 目录下创建 index.vue 文件。由于之前自动引入配置的路径要求,组件需放在 components 文件夹下,也可按需修改自动引入配置。

//src/layout/components/Sidebar/index.vue
<template><el-menurouter:default-active="defaultActive":background-color="variables.menuBg":text-color="variables.menuText":active-text-color="variables.menuActiveText"><el-menu-item index="/dashboard"><el-icon><setting /></el-icon><template #title>Navigator</template></el-menu-item></el-menu>
</template><script lang="ts" setup>
import variables from "@/style/variables.module.scss";const route = useRoute();
const defaultActive = computed(() => {return route.path;
});
</script>
<style scoped></style>

2.2 解决 TypeScript 类型导入问题

在 script 中直接导入 variables.module.scss 时,TypeScript 会报错,原因是它默认只识别 .ts.js 等文件类型,缺少对 .scss 文件的类型定义。为解决该问题,我们在 src/style 下新建 variables.module.scss.d.ts 文件,为 variables.module.scss 提供类型定义。

//src/style/variables.module.scss.d.ts
interface IVariables {menuText: string;menuActiveText: string;menuBg: string;
}export const variables: IVariables;
export default variables;

通过创建该文件,TypeScript 能够识别 variables.module.scss 模块的类型,从而可以正常导入。

3 页面引入 Sidebar 组件

在 layout/index.vue 中引入 Sidebar 组件。

//src/layout/indev.vue
<template><div class="app-wrapper"><div class="sidebar-container"><sidebar></sidebar></div><div class="main-container"><div class="header"><div class="navbar">导航条1</div><div class="tags-view">导航条2</div></div><div class="app-main"><router-view></router-view></div></div></div>
</template>
<style lang="scss">
.app-wrapper {@apply flex w-full h-full;.sidebar-container {@apply bg-red w-[var(--sidebar-width)];}.main-container {@apply flex flex-col flex-1;}.header {@apply h-84px;.navbar {@apply h-[var(--navbar-height)] bg-yellow;}.tags-view {@apply h-[var(--tagsview-height)] bg-blue;}}.app-main {@apply bg-cyan;min-height: calc(100vh - var(--tagsview-height) - var(--navbar-height));}
}
</style>

完成上述所有步骤后,在项目的根目录下运行 npm run dev 命令即可启动开发服务器,打开浏览器访问相应的地址,就可以查看页面的实际效果,检查 Sidebar 组件是否按照预期显示和工作。

下一篇将继续探讨Sidebar组件,敬请期待~


http://www.ppmy.cn/news/1573571.html

相关文章

机器学习入门实战 1 - 认识机器学习

&#x1f4d6; 学习内容 1️⃣ 什么是机器学习&#xff1f; &#x1f4cc; 机器学习 vs 传统编程 在传统编程中&#xff0c;我们手动编写规则&#xff1a; def is_adult(age):if age > 18:return "Adult"else:return "Child"&#x1f4a1; 传统编程…

Android 进程间通信中 Messager 的简单使用

Messenger 是 Android 中一种简单且高效的进程间通信&#xff08;IPC&#xff09;机制。它基于 Binder 和 Handler 实现&#xff0c;适用于轻量级的跨进程通信场景。相比 AIDL&#xff08;Android Interface Definition Language&#xff09;&#xff0c;Messenger 更加简单易用…

TypeScript 与后端开发Node.js

文章目录 一、搭建 TypeScript Node.js 项目 &#xff08;一&#xff09;初始化项目并安装相关依赖 1、创建项目目录并初始化2、安装必要的依赖包 &#xff08;二&#xff09;配置 TypeScript 编译选项&#xff08;如模块解析方式适合后端&#xff09; 二、编写服务器代码 &a…

本地DeepSeek模型GGUF文件转换为PyTorch格式

接前文,我们在本地Windows系统上,基于GGUF文件部署了DeepSeek模型(DeepSeek-R1-Distill-Qwen-1.5B.gguf版本),但是GGUF是已经量化的版本,我们除了对其进行微调之外,无法对其训练,那么还有没有其他办法对本地的GGUF部署的DeepSeek模型进行训练呢?今天我们就反其道而行之…

【Quest开发】全身跟踪

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 最终效果&#xff1a;能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势&#xff0c;实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …

VSCode本地python包“无法解析导入”

问题现象 在使用 VSCode 编写 Python 代码时&#xff0c;虽然程序能正常运行&#xff0c;但遇到“无法解析导入”的问题&#xff0c;导致代码无法高亮。 解决方法 配置 python.autoComplete.extraPaths 打开 VSCode 设置&#xff08;CtrlShiftP -> Preferences: Open Wo…

【大语言模型】最新ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用

ChatGPT、DeepSeek等大语言模型助力科研应用 随着人工智能技术的快速发展&#xff0c;大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练&#xff0c;能够帮助科研人员高效地筛选文献、生成论文内容、进行数…

01-零基础入门嵌入式系统

1.什么是嵌入式系统 首先我们要知道计算机系统分为大型机、通用计算机和嵌入式系统三大类。 计算机系统的发展&#xff0c;经历了由1台计算机系统为N个人服务的大型机时代到由1台计算机系统为1个人服务的PC时代&#xff0c;正在步入由N台计算机系统为1个人服务的嵌入式时代。 嵌…