Vue3项目框架搭建

news2025/1/11 8:09:25

前言

大多时候是在别人搭建好的项目上开发需求,突然要自己从新项目搭建开始,纯纯赶鸭子上架,参考一些项目,试着搭建的,记录一下历程,主要怕忘了。有些地方本该贴上代码截图更好,但是我此刻手头没有启动代码,所以重在分享一个思路历程吧,某个环节的具体实现可以上网搜下。

技术选择

首先要确定我们用哪些技术、组件库等等,这里我搭建的选择是:Vue3、Typescript、Vite、Element Plus、Axios、scss、Echart。

过程

创建项目

在命令行窗口执行以下命令可以创建基础项目,自己自定义选择,如果执行命令报错,检查下node版本是否过低,升级到18+再试。

npm create vue@latest

安装三方插件

接下来要安装一些必须的插件:UI组件库、http请求库、css样式库

Element Plus安装和使用

安装命令如下,安装完要在main.ts中引入才能使用,别忘记还要引入它的样式文件。

npm install element-plus --save

Axios安装和使用

调接口我用的比较多的就是axios了。安装完成后,一般会封装一个request.ts文件,用来编写请求拦截器和响应拦截器以及接口请求地址。再把要用的接口封装到一个或多个单独的文件api.ts里,api.ts会引用request.ts ,为每一个接口定义一个方法并导出,页面上用的时候就可以直接调用api.ts里的方法了,这样通过api.ts统一管理我们用的接口就很好。

axios请求拦截器:通过可以统一为接口请求添加token等一些请求头

axios响应拦截器:拦截错误码401 500 404等统一给出提示或跳转处理,优化用户体验。

npm install axios

scss安装和使用 

样式库一般用的也比较多,scss、less都行,可以方便我们写嵌套样式,所以装上一个。

npm install -D sass sass-loader

其余的插件

到这里就是看自己需不需要用的插件了,没有也行。推荐几个吧。

unplugin-vue-router安装和使用

这个是可以自动生成路由的,一般我们新建一个页面就要去route目录下定义一条路由配置,这个插件只要你在src\pages目录下新建的vue组件,它可以按照层级自动生成路由配置。比如src\pages\login.vue  直接能通过/login访问这个页面,不用手动去定义这个/login的路由。

npm i -D unplugin-vue-router
Echart安装和使用

如果项目里需要画图表,那就装上吧。

在要用的页面import导入才能用哦,而且重点是显示图表的div一定要设置height和width才能生效。我记得我主页好像也有一篇用echart的文章。Vue2项目引用echart插件_npm install echarts --save-CSDN博客

npm install echarts --save

Layout布局

要用的插件装完,就开始布局整体页面结构了,页面、菜单、路由这三个是相关联的,我感觉这里还是有点讲究的,我做的是一个管理系统,所以顶部导航栏、侧边菜单栏以及底部这部分就是公用的,通过route的配置,我们可以实现每个页面都继承这部分公共的内容。

就上面这个效果来布局,首先新建一个layout.vue组件,它的内容就是上面的布局代码,这个要自己写,我用的是elementplus里的el-container布局容器划分结构的,当前页面的那个区域我们只需要定义一个<router-view>标签,它会根据当前访问的路由动态渲染出对应的页面,往下我们看看路由怎么个配置法。

我们定义根路由/指向这个layout.vue组件,然后所有基于这个layout布局的页面的路由都定义在根路由/的children子路由里,这样就可以实现我们访问某个页面的路由,这个布局结构依然在的。

权限设置

权限系统在前端项目里也是必须的,我总结了三种权限,从我以往接触的项目经验里。

路由权限

路由权限例如我们访问了一个不存在的路由,会页面空白,一般会定义一些通用的异常页面,比如404页面,出现这种情况我们就默认跳转到/404页面了。

在路由拦截器router.beforeEach()里,可以对一些路由进行拦截,加入特定的逻辑。

未登录的话跳转登录页面等等

无权限的话跳转无权限页面等等

菜单权限

菜单就是我上图的侧边栏的Sidebar区域的数据,一般用户角色不同看到的菜单项是不一样的,需要前端和后端配合完成这个权限的设置。

我的方法是:菜单点击是要跳转对应的路由的,所以菜单项跟路由表是相对应的,默认我们遍历路由表的配置,显示所有的菜单,然后根据接口返回的当前用户角色的菜单列表进行比对,没返回的就隐藏掉。

1. 路由表渲染菜单项,通过meta属性配置菜单名称、icon等

2. 要跟后台为每个菜单约定一个唯一标识,例如后台返回菜单id是user, 前端user路由可以在meta属性里配置一个id:user,这样比对的时候就是查找前端菜单list里id为user的接口是否返回,没有返回说明这个菜单没有权限查看,需要隐藏。

3. Sidebar一般用el-menu组件实现菜单

菜单的层级根据路由表是否有children属性,如果有那这个菜单就要渲染成下拉菜单。嵌套路由这里涉及递归组件调用了。我们需要封装一个sidebar组件。(参考开源项目RuoYi-Vue3)

按钮权限

如果页面上的一些操作按钮也针对不同用户角色开放,那就跟后台约定操作按钮的权限标识id,前端缓存(localstorage)接口返回的当前所有的权限id list,在页面上判断指定的id是否存在,存在则表示需要显示该按钮。

总结

参考了很多的项目的框架思路,最终输出了上面的方案,也是我才学会的一种,才在初步搭建的阶段,还有很多需要完善的。若依开源框架挺全面的,可以下载代码RuoYi-Vue3的代码看看,附上链接。

GitHub - yangzongzhuan/RuoYi-Vue3: :tada: (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统

其他网址

安装 | Element Plus

vue3 【提效】自动路由(含自定义路由) unplugin-vue-router 实用教程-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue引入使用iconfont字体图标

由于element-ui或element-plus提供的图标有时候并不能满足日常需求,所以这篇介绍一下前端引入阿里巴巴矢量图标库使用,不止是vue使用,不限于vue2、vue3,html或是其他框架也是同样的道理,只要引入都是同样可以使用的。 1. 首先进入阿里巴巴矢量图标库官网 官网:https://…

弱智吧:大模型变聪明,有我一份贡献【大模型VS弱智吧,谁聪明?谁弱智?】

「被门夹过的核桃&#xff0c;还能补脑吗&#xff1f;」 在中文网络上流传着这样一段话&#xff1a;弱智吧里没有弱智。 百度「弱智吧」是个神奇的地方&#xff0c;在这里人人都说自己是弱智&#xff0c;但大多聪明得有点过了头。最近几年&#xff0c;弱智吧的年度总结文章都可…

算法——决策树

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 一、什么是决策树&#xff1f; 决策树&#xff08;decision tree&#xff09;&#xff1a;决策树是一种树形结构的监督学习算法&#xff0c;广泛应用于分类任务和回归任务中。它通过递归地将数据…

豆瓣的ip地址怎样修改:探索显示机制与实用操作

在数字化时代&#xff0c;网络空间成为了我们日常生活不可或缺的一部分。豆瓣&#xff0c;作为一个集书籍、电影、音乐评论及社交功能于一体的综合性平台&#xff0c;其用户遍布全球。然而&#xff0c;有时我们可能因为隐私保护、网络限制或特定需求而希望修改在豆瓣上显示的IP…

【STM32 FreeRTOS】任务

使用 RTOS 的实时应用程序可以被构建为一组独立的任务。每个任务在自己的上下文中执行&#xff0c;不依赖于系统内的其他任务或 RTOS 调度器本身。在任何时间点&#xff0c;应用程序中只能执行一个任务&#xff0c;实时 RTOS 调度器负责决定所要执行的任务。因此&#xff0c; R…

Figure 02 机器人发布:未来AI的巅峰还是泡沫中的救命稻草?

引言 近日&#xff0c;Figure AI 公司发布了其最新的机器人产品 Figure 02&#xff0c;引发了广泛关注。作为 Figure AI 的第二代人形机器人&#xff0c;Figure 02 的推出引发了关于它是否是“地表最强”机器人的讨论。同时&#xff0c;由于 OpenAI 的技术支持&#xff0c;这款…

Java Web —— 第三天(Ajax+组件)

Ajax 概念: Asynchronous JavaScript And XML&#xff0c;异步的JavaScript和XML。 作用: 数据交换:通过Aiax可以给服务器发送请求&#xff0c;并获服务器响应的数据 异步交互:可以在不重新加载整个页面的情况下&#xff0c;服务器交换数据并更新部分网页的技术&#xff0c…

Java开发笔记--通用基础数据校验的设计

最近在开发一个功能&#xff0c;对排水管网的基础数据(包括管井、管道、泵站&#xff0c;雨水口&#xff0c;雨水口线&#xff0c;泵站&#xff0c;污水处理厂&#xff0c;排口等)的导入进行校验。 以字段为纬度&#xff0c;考虑二个方面的校验&#xff1a;数据库唯一&#xf…

RHCA III之路---EX436-9

RHCA III之路---EX436-9 1. 题目2. 解题2.1 安装apache2.2 配置页面2.3 配置selinux和防火墙2.4 创建资源 3. 确认 1. 题目 2. 解题 考试时会给你个url,从url下载index.html并放入默认目录 2.1 安装apache 3个节点分别安装 yum install -y httpd2.2 配置页面 nodea上执行 …

VIVADO IP核之DDS直接数字频率合成器使用详解

VIVADO IP核之DDS直接数字频率合成器使用详解 目录 前言 一、DDS基本知识 二、DDS IP核使用之SIN COS LUT only 三、DDS IP核之SIN COS LUT only仿真 四、DDS IP核使用之Phase Generator and SIN COS LUT 五、DDS IP核之Phase Generator and SIN COS LUT仿真 总结 前言 …

js 深入理解原型(prototype)及如何创建对象

目录 1. 概述2. 工厂模式3. 构造函数模式3.1 创建的格式3.2 JS内部执行步骤3.3 constructor 构造器3.4 构造函数也是函数3.5 构造函数的问题 4. 原型模式 prototype4.1 理解原型本质4.2 原型层级(访问一个属性&#xff0c;查询的次序&#xff09;4.2.1 查询次序&#xff1a;实例…

电动工具研讨会展商阵容揭晓,您的元器件选型指南!

导语 面对日益激烈的市场竞争&#xff0c;如何让您的电动工具脱颖而出&#xff1f;PI、MPS等多家知名元器件厂商将带来最新产品&#xff0c;覆盖MCU、电源管理芯片、功率器件等多个领域&#xff0c;助您一站式选型&#xff01; 在智能制造浪潮的推动下&#xff0c;电动工具正快…

谷粒商城实战笔记-145-性能压测-性能监控-jvisualvm使用-解决插件不能安装

文章目录 jvisualvm的作用安装查看gc相关信息的插件解决jvisualvm不能正常安装插件的问题1&#xff0c;查看java版本2&#xff0c;打开网址3&#xff0c;修改jvisualvm的设置 jvisualvm的作用 JVisualVM是一个集成在Java Development Kit (JDK) 中的多功能工具&#xff0c;它提…

使用易语言写一个翻译小助手

下载地址: https://pan.quark.cn/s/fa0935d10b10

springboot流浪猫狗领养管理系统-计算机毕业设计源码51529

目 录 摘要 1 绪论 1.1 研究背景及意义 1.2 开发现状 1.3论文结构与章节安排 2 流浪猫狗领养管理系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例…

Java社会校招类型人力资源招聘系统小程序源码

解锁社会校招新篇章&#xff1a;探索高效人力资源招聘系统 引言&#xff1a;为何社会校招需要升级&#xff1f; 在这个日新月异的时代&#xff0c;企业之间的竞争愈发激烈&#xff0c;而人才作为核心竞争力&#xff0c;其获取与培养成为了每个企业不可忽视的战略要点。尤其是…

桥韵国风:传统美学桥梁可视化

融合国风元素&#xff0c;采用图扑可视化技术&#xff0c;将桥梁结构与美学设计生动展示&#xff0c;传递传统文化的独特韵味&#xff0c;提升观赏与研究价值。

MySQL排序,相同分数的,排序相同

一、数据准备 CREATE TABLE staff_product (staffId bigint NOT NULL COMMENT 员工id,staffName varchar(255) DEFAULT NULL COMMENT 员工姓名,product_count int DEFAULT NULL COMMENT 生产的产品数,PRIMARY KEY (staffId) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT员工…

『大模型笔记』人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)

人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF) 文章目录 一. 人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)1. 概念解释2. RLHF的组成部分2.1. 强化学习(Reinforcement Learning, RL)2.2. 状态空间(state space)2.3. 动作空…

【OpenCV C++20 学习笔记】直方图均衡化-Histogram Equalization

直方图均衡化-Histogram Equalization 原理图片的直方图直方图均衡化实现方法 API示例 原理 图片的直方图 直方图的横坐标是图片的强度值&#xff08;颜色值&#xff09;&#xff0c;纵坐标是每个强度值对应的像素的个数&#xff1b;因此坐标系上的每个方形图就代表了整张图片…