(Vite-Vue-Admin)Vue3+vite+element-plus项目功能和问题总结

1.vite快速构建vue3项目 npm create vite@latest vite-vue-admin -- --template vue
2.element-plus三种引入方式(全局引入,按需引入,手动引入)
3.vue3引入路由
4.layout整体布局实现(header,aslide,main)

可以写一个公共的样式文件index.less
5.问题:设置整个高度为100%不生效:解决,不仅设置#app,还要设置html和body。

    html,body,#app{margin: 0;padding: 0;height: 100%;}

6.header图标使用

  • element-plus的el-icon引入 npm install @element-plus/icons-vue;注意图标需要全局引入,或者配置按需引入;
  • el-button中使用图标,最好在el-button下再引入el-icon或者svg图标好设置图标大小
  • element-plus中el-avatar以及el-image组件使用本地路径的图片无法显示的问题。解决:需要使用new URL(url, import.meta.url)特定图片处理方法(import.meta.url 是一个 ESM 的原生功能,会暴露当前模块的 URL。将它与原生的 URL 构造器 组合使用,在一个 JavaScript 模块中,通过相对路径我们就能得到一个被完整解析的静态资源 URL)

7.header右侧下拉菜单实现:el-dropdown;里面可以有表单然后包含处理方法

8.左侧菜单的初步实现(el-menu);动态图标使用<component>  ;el-menu的index对应路由路径配置    

<el-icon><component class="icons" :is="item.icon"></component></el-icon>

9.基础样式整理实现

10.vue3中如何使用vuex实现菜单折叠(vuex在setup中mapState等辅助函数用法)

const store = useStore();
const isCollapse = computed(() => store.state.layout.isCollapse);const collapseMenu = (isCollapse) =>{store.commit("layout/modifyCollapse",isCollapse);
}

11.左侧路由跳转右侧展示相应组件的实现
12.home组件左侧动态实现
13.vue3本地mock和线上fastmock的使用(本地:一定要引入mock.js文件到main.js)
14.二次封装axios的原因及实现:请求封装,线上fastmock,

  • 三个环境的配置(vite获取环境变量import.meta.env.MODE):导出的config包括当前环境;三个环境配置根据当前环境的返回;全局mock设置
  • Mock总开关和单个接口自定义开关(便于接口调试和联调):isMock是mock是否使用线上mock控制的总开关,如果这里设置true,后面单个接口可以不设置,如果想单独设置false也可以在具体接口中设置,在后续联调时好一次性修改
  • 判断是线上环境不能使用mock ,使用线上api
  • 注意属性值method不是methods

15.Home组件右侧上面数据的展示:el-card用户信息,购买数据显示

16.注意布局格式:el-row和el-col
17.Home组件右侧echarts表格的渲染

  • 获取数据折线图,柱状图,拼图数据,并设置option的基本配置
  • 获取数据:重点在接口数据获取后,数据的重新组装,xAxis.data和series数据不对,就显示不出来
  • Setup中获取proxy方法类似于this
  • 折线图:x轴数据,series数据,type通过过去的数据设置进去(根据echarts 官网),echarts.init()方法,参数必须是真实的DOM元素
  • 柱状图:
  • 饼图

18.面包屑的实现:breakcrumb vuex 
    问题:setup中使用vuex辅助函数?
    首页一直显示,其他分级显示
    less样式穿透:deep()

多级菜单可以设置多个属性:

 menuItem: [{first: "其他", second: "页面1"}]
      <el-breadcrumb separator="/"><el-breadcrumb-item class="root" :to="{ path: '/' }">首页</el-breadcrumb-item><el-breadcrumb-item v-if="menuItem.first && menuItem.first!=='首页'"><a href="/">{{menuItem.first}}</a></el-breadcrumb-item><el-breadcrumb-item v-if="menuItem.second">{{menuItem.second}}</el-breadcrumb-item></el-breadcrumb>

19.tags标签展示及切换
tags标签的删除(删除后高亮显示逻辑)
    Tag显示和删除,高亮显示,tag实现步骤
    el-tag tag为home时不能删除
    左侧菜单点击时,tag显示
    点击tag进行路由跳转
    关闭tag ,取length 关闭后索引减一且vuex中数据删除
    删除当前跳转后一个,删除最后一个跳转前一个

element-plus的el-tag标签关闭标签时的高亮显示逻辑-CSDN博客

20.use组件table数据的展示:用户管理用本地mock实现,因为有增删改查
用户管理分页实现
分页样式处理
用户搜索的实现
用户新增UI实现
用户新增数据实现
    渲染,分页,点击某页时数据更新
    分页样式,

21.计算表格高度,用calc计算高度用于动态计算长度值

用户搜索
    用户新增:dialog,新增完成后,关闭弹窗,提示,重置表单,刷新表单数据,重置表单需要有prop属性重置表单不生效?日期处理;

setup()函数中emit的用法:

 setup(props,context) {const dialogVisible = props.dialogVisible;// 关闭弹窗const handleClose = done => {context.emit("closeDialog", false);}
}


新增用户表单验证:新增和编辑共用组件;title处理:变量区分;编辑时数据通过插槽传入;

22.浅拷贝对编辑数据进行处理Object.assign;?

23.点击后再点新增新增窗口有值?通过nextTick进行处理

主要通过Object.assign()对userForm数据进行浅拷贝,并且通过nextTick()方法使浅拷贝的数据立即生效

    // 打开用户编辑窗口const openEditDialog = row => {dialogVisible.value = true;type.value = "edit";proxy.$nextTick(() => {Object.assign(userForm.value, row);});};


用户编辑实现第一步
用户编辑实现第二步
删除用户

24.登录静态页面实现
    登录后左侧菜单数据不一样,菜单显示不同
    菜单数据app里面调用,每次登录都要获取
登录后返回左侧菜单的列表
存储到vuex中的aside组件显示出来
解决数据持久化问题 

import createPersistedState from 'vuex-persistedstate'const store = createStore({modules:{layout,token},plugins: [createPersistedState()]
});


25动态路由实现(重点)
    登录后需要调用menu数据,然后根据menu数据动态设置路由数据
    路由里面通过循环路由数据生成动态路由
    router.addRoute()
    问题:路由重复? 动态路由设置在app.vue里面刷新时有问题

动态路由配置总结:vue3动态路由配置总结-CSDN博客
登出功能实现
26.路由守卫实现(路由拦截逻辑)
    token设置,获取,清楚,通过js-cookie进行设置
    没有token且路由不为login
    登录以后用错误路由地址栏回车:路由匹配,获取到路由用当前路由进行匹配
    否则进行跳转


// 路由守卫中再次设置路由(此时是在地址栏直接回车时处理)
store.commit("layout/setDynamicRoutes", router);// 判断路由在配置的动态路由中是否存在,不存在则跳转到home,存在则直接跳转
const checkRouter = (path) =>{let hasCheck =  router.getRoutes().filter(item=>item.path == path).length;if (hasCheck) {return true} else {return false}
}router.beforeEach((to, from, next) => {// 要重新获取tokenconst token = store.state.token.token;//注意这里的逻辑: 如果咩有token且路由不为/login则直接跳转到login页面// 如果路由存在且有token则直接到home页面否则直接nextif (!token && to.path !== '/login') {next('/login');// 否则检查路由是否存在,不存在直接跳转home页面}else if(!checkRouter(to.path)){next('/main');}else {// 存在则直接跳转next();}
});

27.api封装中实现请求拦截后ElMessage弹窗处理信息,发现ElMessage样式错误

如果要再非vue组件中使用element-plus组件且有样式需要组件和样式文件一起引入(这种情况配置了按需引入也没用)

import { ElMessage } from 'element-plus'
import 'element-plus/dist/index.css'

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

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

相关文章

2023年【道路运输企业主要负责人】考试技巧及道路运输企业主要负责人复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年【道路运输企业主要负责人】考试技巧及道路运输企业主要负责人复审模拟考试&#xff0c;包含道路运输企业主要负责人考试技巧答案和解析及道路运输企业主要负责人复审模拟考试练习。安全生产模拟考试一点通结合…

【ES专题】ElasticSearch快速入门

目录 前言从一个【搜索】说起 阅读对象阅读导航笔记正文一、全文检索1.1 什么是【全文检索】1.2 【全文检索】原理1.3 什么是倒排索引 二、ElasticSearch简介2.1 ElasticSearch介绍2.2 ElasticSearch应用场景2.3 数据库横向对比 三、ElasticSearch环境搭建3.1 Windows下安装3.2…

蓝桥杯(C++ 扫雷)

题目&#xff1a; 思想&#xff1a; 1、遍历每个点是否有地雷&#xff0c;有地雷则直接返回为9&#xff0c;无地雷则遍历该点的周围八个点&#xff0c;计数一共有多少个地雷&#xff0c;则返回该数。 代码&#xff1a; #include<iostream> using namespace std; int g[…

SpringCloud Gateway实现请求解密和响应加密

文章目录 前言正文一、项目简介二、核心代码2.1 自定义过滤器2.2 网关配置2.3 自定义配置类2.4 加密组件接口2.5 加密组件实现&#xff0c;AES算法2.6 启动类&#xff0c;校验支持的算法配置 三、请求报文示例四、测试结果4.1 网关项目启动时4.2 发生请求时 前言 本文环境使用比…

Python基础入门例程27-NP27 朋友们的喜好(列表)

最近的博文&#xff1a; Python基础入门例程26-NP26 牛牛的反转列表&#xff08;列表&#xff09;-CSDN博客 Python基础入门例程25-NP25 有序的列表&#xff08;列表&#xff09;-CSDN博客 Python基础入门例程24-NP24 淘汰排名最后的学生&#xff08;列表&#xff09;-CSDN博客…

2017年第三届 美亚杯电子取证 个人赛题解

记录做题个人赛题目 取证大师直接取证 1 Gary的笔记本电脑已成功取证并制作成镜像 (Forensic Image)&#xff0c;下列哪个是其MD5哈希值。 A.0CFB3A0BB016165F1BDEB87EE9F710C9 B.5F1BDEB87EE9F710C90CFB3A0BB01616 C.A0BB016160CFB3A0BB0161661670CFB3 D.16160CFB3A0BB0161…

如何在MacOS使用homebrew安装Nginx

文章目录 Homebrew安装nginxbrew启动Nginxbrew关闭Nginx 参考文章地址 Homebrew安装nginx 在确保MacOS 安装Homebrew成功以后&#xff0c;执行如下命令 brew install nginx注意&#xff1a;Nginx安装成功后会提示目录位置&#xff1b;每个人的系统可能因为Homebrew的安装位置…

【Java数据结构重点知识】第三节:认识包装类和泛型

目录 一&#xff1a;包装类 1.什么是包装类 2.装箱和拆箱 3.一个经典面试题 二&#xff1a;泛型 1.什么是泛型 2.语法 3.使用 4.泛型是如何编译的 5.泛型的上界 一&#xff1a;包装类 1.什么是包装类 &#xff08;1&#xff09;概念&#xff1a;在Java中&#xff0…

在Win10系统进行MySQL的安装、连接、卸载

在Win10系统进行MySQL的安装、连接、卸载 MySQL的安装 本教程在Win10系统下安装部署MySQL-8.0.32版。 MySQL安装参考地址 MySQL安装包地址 提取码: rnbc。 选择下载mysql-installer-community-8.0.32.0安装包。 连接数据库 方式一&#xff1a; 安装后&#xff0c;可以在开始…

Test-Agent----基于Centos7系统部署Test-Agent

【Test-Agent----基于Centos7系统部署Test-Agent】 一、部署 Test-Agent 1.1 环境准备 环境基本信息&#xff1a;Centos7.9操作系统&#xff0c;16核64G1T硬盘&#xff0c;Python3.9.7 1.2 部署 Test-Agent &#xff08;1&#xff09;安装git-lfs cd /opt curl -s https:…

Agent 应用于提示工程

如果Agent模仿了人类在现实世界中的操作方式&#xff0c;那么&#xff0c;能否应用于提示工程即Prompt Engingeering 呢&#xff1f; 从LLM到Prompt Engineering 大型语言模型(LLM)是一种基于Transformer的模型&#xff0c;已经在一个巨大的语料库或文本数据集上进行了训练&…

钡铼技术助力ARM工控机在智慧交通中的创新应用

在交通运输领域&#xff0c;钡铼技术ARM工控机可以实现以下功能&#xff1a; 实时监控和管理&#xff1a;利用钡铼技术ARM工控机&#xff0c;可以对交通运输中的车辆、船只、飞机等进行实时监测和管理&#xff0c;帮助调度员提高车辆调度和路线规划的准确性和效率。 安全保障&…

不要在不使用cvx优化的场合使用log_det,应改为log(det(..)),否者可能会出现奇怪的错误

跑代码的时候遇到的问题 %% 分解为功率和单位模&#xff0c;交替优化功率分量和单位模clc;clear; Nt 8; % 发射天线数目 8 Nr 4; % 接收天线数目 4 Ne 6; % Eve天线数目 6 noisePower 1; SNRTotaldB -5:5:35; %%%%最大发射功率单位dB SNRTotal 10.^(SNRTotaldB./…

【Liunx应用市场】yum

【Liunx应用市场】yum 1. Linux 软件包管理器 yum2. yum源3. yum的使用3.1 yum查找3.2 yum安装3.3 yum删除 所属专栏&#xff1a;Linux学习❤️ &#x1f680; >博主首页&#xff1a;初阳785❤️ &#x1f680; >代码托管&#xff1a;chuyang785❤️ &#x1f680; >感…

数据标准是什么?如何建立企业的数据标准?

2023年10月25日国家数据局正式揭牌&#xff0c;由国家发展和改革委员会管理。国家数据局的主要职责是负责协调推进数据基础制度建设&#xff0c;统筹数据资源整合共享和开发利用&#xff0c;统筹推进数字中国、数字经济、数字社会规划和建设等。国家越来越重视数据资源的价值&a…

Spring MVC的常用注解(设置响应篇)

目录 1.返回静态页面 2.返回数据 3.返回HTML代码片段 4.返回json 5.设置状态码 6.设置Header &#xff08;1&#xff09;.设置 Content-Type &#xff08;2&#xff09;.设置其他Header 推荐先看前篇博客Spring MVC的常用注解&#xff08;接收请求数据篇&#xff09; 接收…

微信小程序怎么制作?【小程序开发平台教学】

随着移动互联网的快速发展&#xff0c;微信小程序已经成为了人们日常生活中不可或缺的一部分。从购物、支付、出行到社交、娱乐、教育&#xff0c;小程序几乎涵盖了我们生活的方方面面。那么&#xff0c;对于有营销需求的企业商家来说&#xff0c;如何制作一个自己的微信小程序…

微服务初始和Nacos安装

一)初始微服务: 微服务是将一个大型的&#xff0c;单一的应用程序拆分成多个小型服务&#xff0c;每一个服务负责于特定的业务功能&#xff0c;并且可以通过网络来和其他服务进行通讯&#xff0c;是一个思想&#xff0c;将一个大的项目拆分成多个小的项目&#xff0c;多个小的项…

DDACO

算法 alternative set包括备用路径和禁忌表&#xff0c;roulette体现所占比例越大被选中概率越高的思想。在图2中&#xff0c;节点表示与图1中的边相同的路径&#xff0c;边表示邻接关系&#xff08;AND关系&#xff09; 所有的帕累托最优解构成帕累托最优解集 作者未提供代码…