当前位置: 首页 > news >正文

pnpm, eslint, vue-router4, element-plus, pinia

利用 pnpm 创建 vue3 项目

pnpm 包管理器 - 创建项目

Eslint 配置代码风格(Eslint用于规范纠错,prettier用于美观)

在 设置 中配置保存时自动修复

提交前做代码检查

husky是一个 git hooks工具(git的钩子工具,可以在特定实际执行特定的命令)

 打开 bash终端

当前项目没有使用 git进行管理,用 git init 进行初始化

然后进行 husky 工具配置,将会在当前目录中新建 一个 .husky 文件夹,其中一个叫 pre-commit,这就是真正在代码提交之前要做的事情。

提交代码之前,可以让其执行 package.json中配置的全局命令 lint ,该命令基于 eslint 校验 vue文件,js文件等一系列文件,

 

手动调用校验

 

因为 eslint 是全面检查。耗时,所以解决办法 : 暂存区 eslint 校验

安装 lint-staged 包

package.json中配置 lint-staged命令,如果要执行该命令,还要配置 scripts,也就是lint-staged,一旦触发该命令,就去执行  lint-staged

将内容存放到暂存区并提交

如果代码中有错不能提交,可以先在eslint.cjs中设置关闭,不用管报错先提交

目录调整

将assets,components,stores,views文件夹里的文件删除掉

新增 api 请求文件夹,utils工具文件夹

拷贝全局样式,安装预处理器,进行支持

将图片素材拷贝到 assets 中

在main.js中导入验证是否生效,但是该scss文件在当前项目不支持,,还要安装预处理器

安装 sass预处理器,然后再 pnpm dev 启动 

vue-router4路由代码解析:

  • 与 vue2 不同:vue2直接导出 VueRouter ,但是vue3是按需导入 createRouter 创建路由(创建实例的方法)
  • history有两种模式 createWebHistory 和 createWebHashHistory ,参数是基础路径base,在 vite.config.js中配置
  • (在vue3中创建实例用 createApp,创建 路由用 createRouter)
  • 如果要在 Vue3 compositionAPI中获取路由对象,要通过路由中导入 useRoute获取路由参数,useRouter获取路由对象

按需引入 Element Plus组件库(因为是 pc 端,所以该组件更合适)

先安装 element-plus

因为按需导入需要两个插件,所以安装两个插件

配置 vite.config.js

配置完成再启动。

可以在项目任意位置使用组件

element-plus组件中还能直接使用其他组件而不用引入

pinia多组件共享数据的需求,通过pinia构建仓库和持久化

在 main.js中引入 createPinia函数,createPinia()会创建一个pinia实例,然后添加到 vue应用中

在 store文件夹中新建 user.js 模块:defineStore新建 仓库,setToken存储内容,removeToken移除内容,token中显示内容

在组件上使用

持久化处理

首先安装插件

将插件应用到 pinia实例中,然后 pinia 实例应用到 vue中

如果希望 某个仓库进行持久化,那么就为其添加第三个参数 persist

关于状态管理 pinia :

  • import {createPinia} from 'pinia' 从 pinia库中导入 createPinia 方法(在 main.js中)
  • app.use(createPinia()) 在 vue应用中注册 Pinia 实例 。app.use():这是 Vue 3 中的全局插件注册方法。(在 main.js中)
  • (承上启下)在使用 pinia 时,必须先将pinia实例注册到 vue 应用中,然后才能在仓库 (store)文件中创建和使用 pinia 的 store
  • import {defineStore} from 'pinia' 从 pinia库中导入 defineStore函数(在store文件夹下的user.js模块)
  • export const useUserStore = defineStore() ,export 是将 useUserStore这个store进行导出,使它能够被外部使用。return 是将 store 中的具体数据和方法(token,setToken,removeToken)暴露出去,让外部能操作这些数据。
  • (defineStore中有三个参数,第一个是该仓库唯一标识,第二个是个匿名函数(箭头函数),第三个是进行持久化的参数)
  • 要想刷新已有的数据不变,即进行持久化处理,需要安装插件pinia-plugin-persistedstate(git 终端), 在main.js中将其导出,然后应用到 pinia 实例中,而pinia实例用应用到 vue中。然后是 user.js仓库要进行持久化处理,所以为其添加参数 persist:true

Pinia仓库统一管理(两个优化):

  • pinia独立维护;原来的 pinia 是堆砌在 main.js中的
  • 仓库统一导出;原来的 导出要找到对应的 pinia中的 store,路径很可能找错

pinia独立维护,需要将main.js中与 pinia相关的进行提取到 store文件夹下的 index.js文件中

选中剪切 main.js中与 pinia 有关的代码 ,放入到 stores的index.js中,然后将 pinia 实例导入到 main.js中

仓库统一导出:

stores文件夹下已经有了个 user.js仓库(模块),将来需要处理增加更多的模块处理更多业务,那么会需要一个文件夹modules在stores文件夹下接纳其他仓库文件。在 app.vue中要使用 各个模块下面的数据方法,必须要在app.vue中进行导入,然后获取该各个对象,再然后渲染。

而统一导出就在于 在 app.vue中进行导出各个模块时,必须要写一长串的路径,例如导出user模块,导出路径是 import {useUserStore} from '@/stores/modules/user',每要使用任何一个模块,就必须要导入这么一长串,所以解决办法是将所有模块在 stores文件夹下的 index.js文件中进行导入然后再进行导出,也就是将index.js作为核心出口,那么在app.vue中进行导入的话就直接从 stores文件夹下的 index.js中进行导出了。

相关文章:

pnpm, eslint, vue-router4, element-plus, pinia

利用 pnpm 创建 vue3 项目 pnpm 包管理器 - 创建项目 Eslint 配置代码风格(Eslint用于规范纠错,prettier用于美观) 在 设置 中配置保存时自动修复 提交前做代码检查 husky是一个 git hooks工具(git的钩子工具,可以在特定实际执行特…...

在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug

在软件产品从开发到上线的全生命周期中,不同阶段都可能因流程漏洞、技术疏忽或人为因素导致线上问题。以下是各阶段常见问题及典型案例: 1. 需求分析与设计阶段 问题根源:业务逻辑不清晰或设计缺陷 典型问题: 需求文档模糊&#…...

Spring Boot中如何自定义Starter

文章目录 Spring Boot中如何自定义Starter概念和作用1. 概念介绍2. 作用和优势2.1 简化依赖管理2.2 提供开箱即用的自动配置2.3 标准化和模块化开发2.4 提高开发效率2.5 提供灵活的配置覆盖3. 应用场景创建核心依赖1. 确定核心依赖的作用2. 创建 starter-core 模块2.1 依赖管理…...

制作Ubuntu根文件

系列文章目录 Linux内核学习 Linux 知识(1) Linux 知识(2) WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…...

SpringBoot快速接入OpenAI大模型(JDK8)

使用AI4J快速接入OpenAI大模型 本博文给大家介绍一下如何使用AI4J快速接入OpenAI大模型,并且如何实现流式与非流式的输出,以及对函数调用的使用。 介绍 由于SpringAI需要使用JDK17和Spring Boot3,但是目前很多应用依旧使用的JDK8版本&…...

UniApp 中制作一个横向滚动工具栏

前言 最近在用 UniApp 开发项目时,需要一个横向滑动的工具栏。常见的工具栏一般都是竖着的,但横向滑动的工具栏不仅能展示更多内容,还能让界面看起来更加丰富。不过很多朋友可能会发现,如何让内容“横着”展示又不变形、能流畅滚…...

react中如何获取真实的dom

在 React 中,获取真实的 DOM 元素通常通过 ref 来实现。ref 是一个特殊的属性,用于引用组件或 DOM 元素的实例。你可以通过 ref 获取到组件的真实 DOM 元素或组件实例。 1. 函数组件中的 useRef 在函数组件中,获取 DOM 元素的引用需要使用 …...

5G与物联网的协同发展:打造智能城市的未来

引言 随着科技的不断进步,智能城市的概念已经不再是科幻小说中的幻想,它正在逐步走进我们的生活。而这背后的两大驱动力无疑是 5G和 物联网(IoT)。5G网络以其高速率、低延迟、大容量的优势,与物联网的强大连接能力相结…...

【Qt】实现定期清理程序日志

在现有Qt程序中实现可配置日志保存天数的代码示例,分为界面修改、配置存储和核心逻辑三部分: // 1. 在配置文件(如settings.h)中添加保存天数的配置项 class Settings { public:int logRetentionDays() const {return m_settings…...

git bisect 使用二分法查找引入错误的提交

git bisect 使用二分法查找引入错误的提交 Git bisect 命令官方文档 git bisect 这个命令使用二分搜索算法来查找项目历史中哪个提交引入了一个错误 使用该命令时,首先告诉它一个已知包含错误的 “坏” 提交 以及一个已知在错误出现之前的 “好” 提交 然后 git b…...

一种面向车载时间敏感网络的联合路由与时隙调度负载均衡算法

论文标题 中文标题:一种面向车载时间敏感网络的联合路由与时隙调度负载均衡算法 英文标题:A Joint Routing and Time-Slot Scheduling Load Balancing Algorithm for In-Vehicle TSN 作者信息 Bo Xu, Xinrui Chang, Dongyang Xu, Shuo Wang, Uzair As…...

【弹性计算】容器、裸金属

容器、裸金属 1.容器和云原生1.1 容器服务1.2 弹性容器实例1.3 函数计算 2.裸金属2.1 弹性裸金属服务器2.2 超级计算集群 1.容器和云原生 容器技术 起源于虚拟化技术,Docker 和虚拟机和谐共存,用户也找到了适合两者的应用场景,二者对比如下图…...

Golang关于结构体组合赋值的问题

现在有一个结构体,其中一个属性组合了另外一个结构体,如下所示: type User struct {Id int64Name stringAge int64UserInfo }type UserInfo struct {Phone stringAddress string }如果要给 User 结构体的 Phone 和 Address 赋值的话&am…...

DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?

DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗? 文章目录 DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?一、引言1. 背景2. 问题 二、DeepSeek vs ChatGPT:谁更胜一筹?2.1 语言生成能力评测对比场景…...

新建github操作

1.在github.com的主页根据提示新建一个depository。 2.配置用户名和邮箱 git config --global user.name "name" git config --global user.email "email" 3.生成ssh秘钥 ssh-keygen -t rsa 找到public key 对应的文件路径 cat /root/.ssh/id_rsa 复制显…...

Spring Boot 携手 DeepSeek:开启智能交互新时代

前言 在当今数字化浪潮汹涌澎湃的时代,人工智能技术正以前所未有的速度改变着我们的生活和工作方式。大语言模型作为人工智能领域的一颗璀璨明星,凭借其强大的自然语言处理能力,为各个行业带来了新的发展机遇。DeepSeek 作为一款性能卓越的大语言模型,以其高效、准确的文本…...

基于SSM+uniapp的数学辅导小程序+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:用户管理、学习中心、知识分类管理、学习周报管理、口算练习管理、试题管理、考试管理、错题本等技术选型:SSM,Vue(后端管理web),uniapp等测试环…...

HTML的入门

一、HTML HTML(HyperText Markup Language,超文本标记语言)是一种用来告知浏览器如何组织页面的标记语言。 超文本:就是超越了文本;HTML不仅仅可以用来显示文本(字符串、数字之类),还可以显示视频、音频等…...

Windows 安装 GDAL 并配置 Rust-GDAL 开发环境-1

Rust-GDAL 是 Rust 语言的 GDAL(Geospatial Data Abstraction Library) 绑定库,用于处理地理数据。由于 GDAL 依赖较多,在 Windows 上的安装相对复杂,本文档将介绍如何安装 GDAL 并配置 Rust-GDAL 的开发环境。 1. 检…...

IntelliJ IDEA 接入 AI 编程助手(Copilot、DeepSeek、GPT-4o Mini)

IntelliJ IDEA 接入 AI 编程助手(Copilot、DeepSeek、GPT-4o Mini) 📊 引言 近年来,AI 编程助手已成为开发者的高效工具,它们可以加速代码编写、优化代码结构,并提供智能提示。本文介绍如何在 IntelliJ I…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...