大数据毕业设计之前端02:架构布局和aside的设计

前言

上一篇主要讲了我学习前端的一个经历,以及为什么选择BuildAdmin作为深入前端学习的原因.同事也大致聊了一下学习前端需要使用哪些技术栈。

本篇文章来拆解一下BuildAdmin的前端代码结构,和布局实现的细节。

前端代码结构

必须先了解项目的结构,才能明确每个功能模块的代码在哪写。BuildAdmin前端目录如下,我只对一级目录进行了粗略的标注,详细的可以去官网看。

在本地需要使用vue-cli脚手架来构建项目,在构建时会有很多选项,包括使用的vue版本和各种插件。

npm install -g @vue/cli
vue create buildadmin

创建之后,基本的目录结构就出来了,后续就可以在各个功能目录添加子目录和模块。

环境安装

在创建好项目之后,还需要安装一些额外的依赖,例如sass、bable等。

1. 安装sass
npm i sass sass-loader
2. 安装babel

babel的主要功能那是将ES语法转换成浏览器识别的js

npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node @babel/polyfill
3. 安装babel,使用可选链?.

在BuildAdmin中,有很多时候都会出现 ?.,这便是防止出现空指针异常的可选链写法,原则就是:有就用,没有就不用。

假设一个对象obj,没有name属性。如果obj.name则会报空指针错误,如果使用obj?.name则输出的是obj。

npm install --save-dev @babel/plugin-proposal-optional-chaining

4. 关闭lint

lint会检查编码中格式的错误,我个人不是很喜欢,所以我会在vue.config.js中关掉。

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false
})

任何一个vue项目都是从main.ts开始,按照层级开始编写各个组件。而App.vue中作为第一个节点,引入整体的布局组件。

架构布局

BuildAdmin作为一个管理平台,首先要完成布局部分。我们先看BuildAdmin的布局:

可以看到BuildAdmin的整体布局是由:菜单边栏aside、导航header和中心区域main组成的。即ElementPlus中的aside、header、main布局。

这就是官网的代码。

布局实现

从App.vue作为根节点,开始绑定组件。

<layout>就是定义的整个布局。

上面是我从Element的官网copy的布局代码。BuildAdmin在实现布局时,将aside、header、main都拆分成了单独的组件,如下图所示:

后面我也拆分了的布局代码,将aside、header和main拆分成了三个组件,这样便于阅读、定义css和实现js逻辑等。。

要注意的事,拆分成三个组件之后,在css中需要添加一个flex-direction属性,在拆分之间是没有的。答案在官网中给出来了:如果<el-container>里如果有el-header元素,则会默认为垂直排列

后面的拆分,el-header被封装成Header组件了。el-container里面就没有el-header元素了,所以就变成水平分布,这样header就在main的就布局在同一水平线上了,而非上下排列。为了保证上下排列,则必须将此属性设置为column

实现思路

在将页面拆分成三个部分之后,就需要定义css渲染,来确定各个部分的区域大小和样式。header主要用来渲染面包屑标签,所以暂时先不定义这一块的样式。之后会根据导航标签大小和页面布局调整高和宽,即height和width。

main主要展示各个菜单路由切换后的页面,只要确定height和width即可,这个可以后面实现完路由再调整。所以根据开发需要,可以先实现aside的样式。

aside渲染

aside.vue中此时只有一个<el-aside>元素,此时我们需要定义它的css样式。

1. css

在style中定义css时,指定sass为css预处理器。

v-bind是vue3中的新用法。其中的menuWidth参数是pinia定义的状态变量,为260px。这里为什么要使用v-bind,而不是直接写260呢?因为aside的宽度是变化的,因为后面菜单折叠需要动态修改宽度,所以这里不能写死。

而且因为菜单栏要放在aside中,且宽度一致,所以直接使用一个变量方便同步控制。那至于为什么定义成260,接着往下看。

那么,css中这些var里面的–开头的变量是哪里来的啊? 这些其实就是el和自定义全局变量,在控制台都可以查看到。

其中–ba开头的,是BuildAdmin在var.scss中自定义的全局变量。

2. 开发技巧

如果不知道组件的css在哪里定义的,就可以在控制台查看。

可以看到aside的样式:margin上下都是16px,所以上下共有32px。32px + height = 100%,所以aside的height就是100vh-32px?同时,也可以看到width是260px。

3. 渲染效果

至此aside就渲染好了。

虽然现在看起来也没什么变化,但是添加完logo和菜单之后,就会大有不同。

结语

第二篇开篇主要讲了项目的创建和环境变量的安装。后面阐述了边栏aside的设计思路,以及对css的定义和解读。只涉及了基本的vue和ElementUI的使用。

同时,本篇文章提及的控制台查看属性的技巧,下一篇主要讲的菜单渲染,将会涉及vue-router等技术。

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

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

相关文章

2.vue学习笔记(目录结构+模板语法+属性绑定)

1.目录结构 1.vscode ——VSCode工具的配置文件夹 2.node_modules ——Vue项目的运行依赖文件夹 3.public ——资源文件夹&#xff08;浏览器图标&#xff09; 4.src ——源码文件夹 5..gitgnore ——git忽略文件 6.index.html ——如果html文件 7.package.json —…

两数之和(map结构解决)

/*** param {number[]} nums* param {number} target* return {number[]}*/ var twoSum function(nums, target) {let mapIds new Map()for (const [index, item] of nums.entries()) {// 利用map结构不重复的特点&#xff0c;用目标值减去当前值&#xff0c;也就是 9-27// 然…

如何进行代码混淆?方法与常见工具介绍

​ 如何进行代码混淆&#xff1f;方法与常见工具介绍 目录 什么是代码混淆&#xff1f; 代码混淆的方法 常见代码混淆工具 什么是代码混淆&#xff1f; 代码混淆是指将计算机程序的代码转换成一种功能上等价&#xff0c;但难于阅读和理解的形式的行为。混淆后的代码很难被…

P2 Qt Creator创建第一个Qt程序

前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《LLinux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨✨✨ &#x1f33a;本篇简介 &#xff1a;这一章我们学…

远程调试Linux服务器上的代码

远程调试Linux服务器上的代码 首先我们的环境有本地环境还有研发环境&#xff0c;本地环境就是我们本地电脑上面的代码&#xff0c;而研发环境就是我们开发好一个功能&#xff0c;发到一个linux服务器上面的代码&#xff1b;但是有些时候&#xff0c;研发环境上面的代码可能会…

实时视频美颜:美颜SDK选择指南与性能比较

如今&#xff0c;实时视频美颜技术逐渐成为开发者和用户关注的焦点。本文将通过探讨美颜SDK的选择指南以及性能比较&#xff0c;开发者们可以作为参考&#xff0c;以此选择更合适的美颜SDK。 一、美颜SDK的选择指南 1.1目标应用场景 在选择美颜SDK之前&#xff0c;首先需要…

打工人副业变现秘籍,某多/某手变现底层引擎-StableDiffusion模型下载使用

一、模型的概念 首先要了解 Stable Diffusion 中的模型概念是什么?维基百科对模型的定义非常简单:用一个较为简单的东西来代表另一个东西。换句话说,模型代表的是对某一种事物的抽象表达。 在 AIGC 领域,为了使机器表现出智能,研发人员使用机器学习的方式让计算机从数据中…

Cloak斗篷技术不知道?超实用干货,FP商家必读!

都2023年了&#xff0c;还有很多人犹豫要不要入局独立站。心动不如行动&#xff0c;如果想要在跨境独立站中干出一番新事业&#xff0c;要赶紧动起来。部分卖家在出海初期&#xff0c;都想着出售FP产品&#xff0c;涉及到FP产品&#xff0c;各大主流平台上都有严格的审核机制&a…

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse&#xff0c;否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

【面试经典150 | 二叉树】相同的树

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题…

python深浅拷贝

【 一 】Python 深拷贝和浅拷贝概念理解 个人见解&#xff1a; 浅拷贝&#xff0c;指的是重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;但里面的元素是原对象中各个子对象的引用。 深拷贝&#xff0c;是指重新分配一块内存&#xff0c;创建一个新的对象&…

Post Quantum Fuzzy Stealth Signatures and Applications

目录 笔记后续的研究方向摘要引言贡献模块化框架模糊构造实施适用于FIDO Post Quantum Fuzzy Stealth Signatures and Applications CCS 2023 笔记 后续的研究方向 摘要 自比特币问世以来&#xff0c;基于区块链的加密货币中的私人支付一直是学术和工业研究的主题。隐形地址…

elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内避坑指南)

es自2020年的8.x版本以来&#xff0c;就提供了机器学习的能力。我们可以使用es官方提供的工具eland&#xff0c;将hugging face上的NLP模型&#xff0c;上传到es集群中。利用es的机器学习模块&#xff0c;来运维部署管理模型。配合es的管道处理&#xff0c;来更加便捷的处理数据…

DSGN:用于 3D 目标检测的深度立体几何网络

论文地址&#xff1a;https://www.jianshu.com/go-wild?ac2&urlhttps%3A%2F%2Farxiv.org%2Fpdf%2F2001.03398v3.pdf 论文代码&#xff1a;https://github.com/chenyilun95/DSGN 论文背景 大多数最先进的 3D 物体检测器严重依赖 LiDAR 传感器&#xff0c;因为基于图像的方…

IDEA中表明或者字段找不到时报红

问题 idea 中mysql的sql语句报红&#xff0c;无论表名还是表字段 原因 是由于sql方言导致的 当我们选择某一个sql方言的时候&#xff0c;xml配置会按照指定规则校验sql是否规范&#xff0c;并给出提示 解决方案 取消sql方言&#xff0c;设置sql方言为None。设置完重启idea既…

理解网络通信中的关键因素-带宽

在今天的数字时代&#xff0c;我们经常听到“带宽”的词汇&#xff0c;尤其是在谈论互联网速度、网络连接和数据传输时。带宽是网络通信的关键概念&#xff0c;对于我们的在线体验至关重要。 带宽的定义 带宽是一个用于描述网络通信速度和容量的术语。它通常用于衡量网络连接…

解决firefox(火狐)浏览器使用transform: scale导致的border不显示或显示不全的问题;

最近火狐遇到了此问题&#xff0c;查了许久没有解决办法也有说是因为火狐不支持小于1px单位的&#xff0c;也有说火狐浏览器本身的问题&#xff0c;然后也没有解决方案&#xff0c;最后没办法只能用最笨的方法解决。。。。 只针对Firefox使用CSS&#xff0c;使用’-moz-documen…

层流燃烧模拟的技术研究与实践

层流燃烧模拟的技术研究与实践 一、引言 层流燃烧,作为一种基础而重要的燃烧类型,广泛存在于各种工业应用中,如发动机、燃气轮机、燃烧室等。为了更好地理解和优化这一过程,科研人员运用计算流体动力学(CFD)工具进行模拟,以期能更深入地洞察其内在机制。 二、层流燃烧…

MQTT 协议入门:轻松上手,快速掌握核心要点

文章目录 什么是 MQTT&#xff1f;MQTT 的工作原理MQTT 客户端MQTT Broker发布-订阅模式主题QoS MQTT 的工作流程开始使用 MQTT&#xff1a;快速教程准备 MQTT Broker准备 MQTT 客户端创建 MQTT 连接通过通配符订阅主题发布 MQTT 消息MQTT 功能演示保留消息Clean Session遗嘱消…

深度拷贝 deepClone

/*** 深度克隆对象* param {*} value 需要克隆的值 * param {WeakMap} cache 使用 WeakMap 解决环形引用问题&#xff0c;防止内存泄漏 */ function deepClone(value, cache new WeakMap()) {// 基础数据if(typeof value ! object || value null) {return value;}// 解决环形…