使用vue3+element-ui plus 快速构建后台管理模板

一、安装 vue3 脚手架

npm create vue@latest

在这里插入图片描述

cd vue-ui-template #切换到刚刚创建好的vue项目根目录中
npm install #下载项目所需要的依赖包
npm run dev #启动运行项目服务

项目启动后,默认页面显示如下:

在这里插入图片描述

二、安装element-ui plus

官网链接:http://element-plus.org/zh-CN/guide/installation.html#%E4%BD%BF%E7%94%A8%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8
element-ui plus
快速上手链接:http://element-plus.org/zh-CN/guide/quickstart.html

npm install element-plus --save 

在这里插入图片描述

在main.js中进行全局配置(也可按需配置)
因为我的项目比较小,所以我就在页面中整体引入了。正常的话是按需加载

在这里插入图片描述

// main.js
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'const app = createApp(App)app.use(ElementPlus)
app.mount('#app')

三、使用element-ui plus 构建布局

下面是我们要达成的一个布局效果(我之前写过的课设),分为侧边栏和顶部栏以及中间主体内容。

在这里插入图片描述

(一)安装使用element-ui plus 的icon组件

http://element-plus.org/zh-CN/component/icon.html#%E4%BD%BF%E7%94%A8%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8

在这里插入图片描述

  1. 安装命令
npm install @element-plus/icons-vue

在这里插入图片描述

  1. 在main.js中进行全局挂载
import * as ElementPlusIconsVue from '@element-plus/icons-vue'const app = createApp(App)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)
}

在这里插入图片描述

(二)布局组件 container

对于element-ui plus的布局组件我就不一一介绍了,这里将使用到的组件链接放出来
container 布局容器 http://element-plus.org/zh-CN/component/container.html

在这里插入图片描述

<template><div class="common-layout"><el-container><el-aside width="200px">Aside</el-aside><el-container><el-header>Header</el-header><el-main>Main</el-main></el-container></el-container></div>
</template>

我们将这个布局抽离为两个组件,分别为一个header组件和一个aside组件,接下来开始抽离。

(三)模板组件抽离 Aside Header Container

  1. Header 组件(src\components\Header.vue)
<script setup>
import { ref } from 'vue'import { ElMessage } from 'element-plus';
import a11Img from '@/assets/a11.jpeg'  // 导入assets下的图片,自己喜欢啥图加啥图就行
const isCollapse = ref(true)
// 获取父组件传递过来的数据 
const showIcon = defineProps({isCollapse: Boolean
})// 获取父组件自定义的事件
const emit = defineEmits(['changeAside'])// 自定义按钮点击事件,侧边栏的收缩按钮
const collapseAside = () => {emit('changeAside')
}// 登出按钮
const LogOut = ()=>{}</script><template><div><el-header style="display: flex;font-size: 16px;"><div style="display: inline-flex;flex: 1; align-items: center;justify-content: left;"><el-icon v-show="!showIcon.isCollapse" @click="collapseAside" style="color: #303133;"><Fold /></el-icon><el-icon v-show="showIcon.isCollapse" @click="collapseAside" style="color: #303133;"><Expand /></el-icon></div><div class="toolbar"  ><div class="block" style="margin-right: 10px;"><el-avatar :size="40" :src="a11Img" /></div><span>管理员</span><el-dropdown trigger="click"><el-icon style="margin-left: 18px; margin-top: 1px;color: #303133;"><setting /></el-icon><template #dropdown><el-dropdown-menu><el-dropdown-item>View</el-dropdown-item><el-dropdown-item>Add</el-dropdown-item><el-dropdown-item @click="LogOut">退出登录</el-dropdown-item></el-dropdown-menu></template></el-dropdown></div></el-header></div>
</template><style scoped>
.el-header {width: 100%;background-color: #fff;color: var(--el-text-color-primary);box-shadow: var(--el-box-shadow);
}.toolbar {display: inline-flex;align-items: center;justify-content: center;height: 100%;right: 20px;text-align: right;
}.el-dropdown-menu__item {width: 120px;
}.icon-color {color: white;
}
</style>
  1. Aside组件(src\components\Aside.vue)
<script setup>
import { ref } from 'vue'const settings = defineProps({collapse: Boolean,width: String
})const iconColor = ref('color:#F8FAFB')
</script><template><el-aside :width="settings.width"><el-scrollbar><el-menu :default-openeds="['1', '3']" :collapse="settings.collapse" active-text-color="#F8FAFB"background-color="#1A1C1E" text-color="#74767A" router="true"><el-sub-menu index="1"><template #title><el-icon><House /></el-icon><span>首页</span></template><el-menu-item index="/admin/echatsIndex">首页</el-menu-item></el-sub-menu><el-sub-menu index="2"><template #title><el-icon><Menu /></el-icon><span>文章管理</span></template><el-menu-item index="/admin/articles">文章管理列表</el-menu-item></el-sub-menu><el-sub-menu index="3"><template #title><el-icon><Message /></el-icon><span>评论管理</span></template><el-menu-item index="/admin/comments">评论管理列表</el-menu-item></el-sub-menu><el-sub-menu index="4"><template #title><el-icon><Files /></el-icon><span>模块管理</span></template><el-menu-item index="/admin/blocks">模块管理列表</el-menu-item></el-sub-menu><el-sub-menu index="5"><template #title><el-icon><User /></el-icon><span>用户管理</span></template><el-menu-item index="/admin/users">用户管理列表</el-menu-item></el-sub-menu><el-sub-menu index="6"><template #title><el-icon><Watermelon /></el-icon><span>资源管理</span></template><el-menu-item index="/admin/filesAdmin">资源管理列表</el-menu-item></el-sub-menu><el-sub-menu index="7"><template #title><el-icon><Edit /></el-icon><span>编辑器</span></template><el-menu-item index="/admin/md">markdown</el-menu-item><el-menu-item index="/admin/richText">富文本</el-menu-item></el-sub-menu><el-sub-menu index="8"><template #title><el-icon><setting /></el-icon><span>系统设置</span></template><el-menu-item index="/admin/light">背景色</el-menu-item></el-sub-menu></el-menu></el-scrollbar></el-aside>
</template><style scoped>
.el-aside {height: 100vh;overflow: hidden;box-shadow: var(--el-box-shadow-lighter);
}.el-scrollbar {height: 100vh;overflow: hidden;background-color: #1A1C1E;
}.el-menu {border-right: none;
}
</style>

tips:侧边栏菜单这里我开启了路由,然后对应的index="xxx"都是我要跳转的页面,可以自行修改哈

  1. HomeView.vue 视图(src\views\HomeView.vue)
<script setup>
import { ref } from 'vue'// 组件注册
import Header from '@/components/Header.vue'import Aside from '@/components/Aside.vue'const asideSettings = ref({isCollapse:true,width:'200'
})// 给子组件绑定事件,通过子组件emit从而改变父组件的值
const changeAside = ()=>{asideSettings.value.isCollapse = !asideSettings.value.isCollapseif(asideSettings.value.isCollapse){asideSettings.value.width = "64"}else{asideSettings.value.width = "200"}
}</script>
<template><el-container style="min-height: 100vh;min-width: 100vw;overflow: hidden;"><Aside :collapse="asideSettings.isCollapse" :width="asideSettings.width"></Aside><el-container style="height: 100vh;width:100%;display: flex;flex-direction: column;"><Header :isCollapse="asideSettings.isCollapse"  @changeAside="changeAside"></Header><el-main><div><el-card><h1>文本内容</h1></el-card></div></el-main></el-container></el-container>
</template><style scoped>body{background-color: #eee;max-width: 100vw;overflow: hidden;
}.el-main {width: 100%;padding: 0;height: 100vh;overflow-x: hidden;
}</style>
  1. App.vue修改(src\App.vue)
<script setup>
import { RouterView } from 'vue-router'
</script><template><div><RouterView></RouterView></div>
</template><style scoped></style>
  1. vue3的默认css调优 (src\assets\main.css)
@import './base.css';#app {/* max-width: 1280px; */margin: 0 auto;/* padding: 2rem; */min-width: 100vw;min-height: 100vh;font-weight: normal;
}a,
.green {text-decoration: none;color: hsla(160, 100%, 37%, 1);transition: 0.4s;
}@media (hover: hover) {a:hover {background-color: hsla(160, 100%, 37%, 0.2);}
}@media (min-width: 1024px) {body {display: flex;place-items: center;}#app {display: grid;grid-template-columns: 1fr 1fr;/* padding: 0 2rem; */}
}

tips:最终的项目结构为下图,黄色标注为修改过的文件,红色文件标注的为新增的文件

在这里插入图片描述

  1. 页面效果

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


蹲一个赞 b( ̄▽ ̄)d ★,°:.☆( ̄▽ ̄)/$:.°★

以上代码的全部文件 :百度网盘链接: https://pan.baidu.com/s/1WtepwERvqIoq_tYm0BwwSg 提取码: 5kmx

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ (Chapter 1)

C (一) 1.C的命名空间 先来看一个C语言的例子: 下面这段代码是可以正常运行的. #include<stdio.h> int rand 0; int main() {printf("%d \n", rand);return 0; }但是,包含了一个头文件之后,甚至无法通过编译. #include<stdio.h> #include<stdli…

Maven下载与文件配置

文章目录 官网下载相应文件修改配置文件设置环境变量 官网下载相应文件 https://maven.apache.org/ 点击Download ,找到Files 下载好了&#xff0c;请解压&#xff0c;放在你需要存储的位置&#xff01; 修改配置文件 打开解压的文件&#xff1a; 在conf 下有一个setting…

TensorFlow案例学习:对服装图像进行分类

前言 官方为我们提供了一个 对服装图像进行分类 的案例&#xff0c;方便我们快速学习 建议按顺序观看&#xff0c;这是一个小系列&#xff0c;适合像我这样的初学者入门 配置环境&#xff1a;windows环境下tensorflow安装 图片分类案例学习&#xff1a;TensorFlow案例学习&…

沪深300期权一个点多少钱?

经中国证监会批准&#xff0c;深圳证券交易所于2019年12月23日上市嘉实沪深300ETF期权合约品种。该产品是以沪深300为标的物的嘉实沪深300ETF交易型指数基金为标的衍生的标准化合约&#xff0c;下文介绍沪深300期权一个点多少钱?本文来自&#xff1a;期权酱 一、沪深300期权涨…

推荐几个技术学习的网站

USB中文网 点击打开 USB中文网 - USB技术开发交流USB中文网是国内领先的专业USB技术网站&#xff0c;提供USB开发入门教程&#xff0c;USB设备开发&#xff0c;USB驱动开发&#xff0c;USB摄像头&#xff0c;USB麦克风&#xff0c;USB存储设备&#xff0c;USB-HID设备&#x…

华为认证 | HCIP-Datacom,这门认证正式发布新版本!

华为认证数通高级工程师HCIP-Datacom-Campus Network Planning and Deployment V1.5&#xff08;中文版&#xff09;自2023年9月28日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司…

随着 ChatGPT 凭借 GPT-4V(ision) 获得关注,多模态 AI 不断发展

原创 | 文 BFT机器人 在不断努力让人工智能更像人类的过程中&#xff0c;OpenAI的GPT模型不断突破界限GPT-4现在能够接受文本和图像的提示。 生成式人工智能中的多模态表示模型根据输入生成文本、图像或音频等各种输出的能力。这些模型经过特定数据的训练&#xff0c;学习底层模…

Vega Prime入门教程14.04:CDB测试

本文首发于&#xff1a;Vega Prime入门教程14.04&#xff1a;CDB测试 打开失败 打开vpcdb_yemen_urban.acf 会报错 点击确定后会显示默认界面 这个白天蓝海应该是默认场景。 开启服务 打开LP&#xff0c;点击菜单栏或者工具栏 显示管理界面 切换至rtp界面 点击Start RTP按…

牛客 明明的随机数

HJ3 明明的随机数 原题思路代码运行截图收获 原题 HJ3 明明的随机数 思路 如果是C的话直接用set结构体就可以自动排序GO&#xff1a;用一个501的数组存储是否出现&#xff0c;最后从头开始输出出现过的数字 代码 #include <iostream> #include <set> using na…

html与css知识点

html 元素分类 块级元素 1.独占一行&#xff0c;宽度为父元素宽度的100% 2.可以设置宽高 常见块级元素 h1~h6 div ul ol li dl dt dd table form header footer section nav article aside 行内元素 1.一行显示多个 2.不能设置宽高&#xff0c;宽高由元素内容撑开 常见行内…

【Linux服务端搭建及使用】

连接服务器的软件&#xff1a;mobaxterm 设置root 账号 sudo apt-get install passwd #安装passwd 设置方法 sudo passwd #设置root密码 su root #切换到root账户设置共享文件夹 一、强制删除原有环境 1.删除python rpm -qa|grep pytho…

SLAM从入门到精通(ROS和底盘Stm32的关系)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学过Ros的同学&#xff0c;一般对subscribe、publish、话题、服务这些内容都比较熟悉。如果再熟悉一点的话&#xff0c;还会知道slam、move_base、…