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

Vue3.5 企业级管理系统实战(一):项目初始搭建与配置

        本文详细介绍了如何使用 Vite 构建一个高效的 Vue 3.5 项目框架,并整合了 ESLint、Prettier、EditorConfig、Husky、lint-staged 和 commitlint 等现代化开发工具。通过这些工具的集成,我们能够确保代码质量、格式化和提交规范的一致性,从而提高团队的开发效率和项目的可维护性。文章涵盖了项目搭建、工具安装配置、代码风格统一和提交信息规范化的全过程,为协同开发人员提供了一个标准化、高效的开发环境。

1. Vite 项目搭建

该项目主要使用 Vue3 全家桶 + TypeScript

1.1 项目准备

  1. 本项目Node 版本:23.5.0 (应该20+就行,可以根据包管理器提示升级自己的 Node 版本)
  2. 安装包管理工具: pnpm(快速、节省磁盘空间的包管理工具,与 npm 和 Yarn 类似)
npm install pnpm -g

1.2 创建项目并启动

pnpm create vite

切换到项目文件夹下,安装依赖,启动项目

#切换到项目文件夹下
cd vue3-admin-lara#安装依赖
pnpm install#启动项目
pnpm run dev

启动后访问 http://localhost:5173/

2. 工具集成

        ESLint 用于代码质量检查,Prettier 专注于代码格式化,EditorConfig 帮助统一编码风格,而Husky 通过 Git 钩子强制执行代码检查,Lint-staged 仅对暂存文件应用 linters,Commitlint 则确保提交信息遵循一定的规范。这些工具共同构成了一个强大的代码质量和提交规范流程。

2.1 eslint 集成

2.1.1 eslint 安装依赖

通过 npx 安装 eslint

npx eslint --init

配置如下:

安装好后,会生成 eslint.config.js 文件,可在里面进行 eslint 的相关配置:

import globals from "globals"
import pluginJs from "@eslint/js" // 推荐的js规范
import tseslint from "typescript-eslint" // 推荐的ts规范
import pluginVue from "eslint-plugin-vue" // 推荐的vue的规范
import prettierRecommended from "eslint-plugin-prettier/recommended"//prettier集成中安装的插件
// esModule  commonjs
// 1.
// import autoImport from "./.eslintrc-auto-import.json" with { type: "json" }// 2.
import { createRequire } from "module"
const require = createRequire(import.meta.url)
const autoImport = require("./.eslintrc-auto-import.json")// 3.fs.readFileexport default [{ files: ["**/*.{js,mjs,cjs,ts,vue}"] },{languageOptions: {globals: {...globals.browser,...globals.node,...autoImport.globals}}},pluginJs.configs.recommended,...tseslint.configs.recommended,...pluginVue.configs["flat/essential"],{files: ["**/*.vue"],languageOptions: { parserOptions: { parser: tseslint.parser } }},{// 自定义规则,根据需要增加  eslint 主要是校验代码规范  prettier  格式化代码的rules: {"no-console": "warn","vue/multi-word-component-names": "off"}},prettierRecommended // 覆盖掉eslint的规范
]

2.1.2 eslint 插件安装(vscode)

如下图,在 vscode 中搜索 eslint 插件,安装 ESLint 插件。

安装后,点击图标,选择【添加到工作区建议】。

点击后,会在项目文件夹 .vscode 下的 extensions.json 中添加配置,没有的话手动添加一下。

在 package.json 中添加脚本,即可通过 npm run lint 进行校验,代码文件中也会有提示。

2.2 prettier 集成

2.2.1 prettier 安装依赖

prettier 是一个代码格式化工具,用于统一代码风格。

eslint-plugin-prettier 是一个 ESLint 插件,它允许 ESLint 使用 Prettier 的规则来检查代码风格。

eslint-config-prettier 是一个 ESLint 配置,用于关闭 ESLint 中与 Prettier 冲突的规则,确保两者能和谐工作,避免规则冲突。

通过 pnpm 安装 prettier 相关插件:

pnpm install prettier eslint-plugin-prettier eslint-config-prettier -D

安装后,在项目文件夹下新建 prettier 配置文件 prettier.config.js 。

export default {singleQuote: false, // 使⽤单引号semi: false, // 末尾添加分号tabWidth: 2,trailingComma: "none",useTabs: false,endOfLine: "auto",
};

2.2.2 prettier 插件安装(vscode)

如下图,在 vscode 中搜索 Prettier 插件,安装 Prettier 插件。

安装后,点击图标,选择【添加到工作区建议】。

点击后,会在项目文件夹 .vscode 下的 extensions.json 中添加配置,没有的话手动添加一下。

在设置中,搜索 formatter ,选择 Prettier-Code formatter

同时,选择保存时设置文件格式。

这样,以后在保存文件时,就会使用 Prettier 进行代码格式化。

2.3 EditorConfig 插件安装(vscode)

如下图,在 vscode 中搜索 EditorConfig 插件,安装 EditorConfig 插件。

EditorConfig 通过 .editorconfig 文件定义编码风格,如缩进、行尾字符等,确保不同编辑器和开发者使用统一风格。支持多种编程语言和编辑器,配置简单,有助于提升代码一致性。

安装后,点击图标,选择【添加到工作区建议】。

点击后,会在项目文件夹 .vscode 下的 extensions.json 中添加配置,没有的话手动添加一下。

在项目文件夹下新建配置文件 .editorconfig 。

root = true[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf

        这样配置以后,所有协同开发人员下载代码后,会下载同样的插件,使用同样的代码检测配置,保证团队所有人员使用同一种风格进行开发。

2.4 Husky 及 lint-staged 集成

Husky 是一款简化 Git 钩子管理的工具,让开发者在 Git 操作(如提交、推送)前自动执行代码检查、格式化等任务。它易于集成,提高了代码质量和团队协作效率,是现代开发工作流程中的常用组件。

lint-staged 是一个在 Git 暂存文件上运行 linters 的工具,确保只有暂存的文件被检查和格式化,提高了开发流程的效率,并保持代码库的一致性。通过配置 .lintstagedrc 文件,可以指定不同文件类型对应的处理工具,如 ESLint、Prettier 等。结合 Husky 使用,可在提交前自动执行代码质量检查。

通过 pnpm 安装 Husky 及 lint-staged 插件:

pnpm install husky lint-staged -D

在 package.json 中配置 lint-staged,在代码提交前对 js,cjs,ts,vue 文件进行 eslint 校验并尽可能修复,对 html,json,css,scss 文件使用 prettier 进行代码格式化。

然后,使用 husky 配置 git 钩子。

npx husky init

init 后,会生成一个 .husky 文件夹,在改文件夹下配置各种 git 钩子,pre-commit 文件是自动生成的,修改其配置。

如下图,配置好后,在执行git commit时,会先进行代码校验,校验通过后才可以提交。

修改报错前:

修改报错后:

2.5 commitlint 集成 

commitlint 是一个确保 Git 提交消息遵循特定规则的工具,通过预定义的配置来强制执行提交消息格式,有助于维护代码库的提交历史清晰和一致性。结合 Git 钩子,如 Husky,可在提交前自动检查消息是否符合规范。

@commitlint/config-conventional 是一个用于 Commitlint 的预设配置,遵循 Angular 提交消息规范。它帮助团队保持提交消息的一致性,便于生成清晰的变更日志,同时支持语义化版本控制。通过集成此配置,开发者在提交代码时需遵循类型(feat、fix等)、作用域、主题、正文和脚注的结构。

通过 pnpm 安装 commitlint 插件:

pnpm install @commitlint/cli @commitlint/config-conventional -D

在项目文件夹下新建配置文件 commitlint.config.cjs。

module.exports = {extends: ["@commitlint/config-conventional"]
};

在 husky 下添加 git 钩子,在 .husky 文件夹下 新增 commit-msg 文件,修改内容如下

npx commitlint --edit $1

不符合规范时禁止提交:

符合规范时提交成功:

下一篇将探讨 router 及 pinia 的集成,敬请期待~

相关文章:

Vue3.5 企业级管理系统实战(一):项目初始搭建与配置

本文详细介绍了如何使用 Vite 构建一个高效的 Vue 3.5 项目框架,并整合了 ESLint、Prettier、EditorConfig、Husky、lint-staged 和 commitlint 等现代化开发工具。通过这些工具的集成,我们能够确保代码质量、格式化和提交规范的一致性,从而提…...

缓存-Redis-缓存更新策略-主动更新策略-Cache Aside Pattern(全面 易理解)

**Cache-Aside Pattern(旁路缓存模式)**是一种广泛应用于缓存管理的设计模式,尤其在使用 Redis 作为缓存层时尤为常见。该模式通过在应用程序与缓存之间引入一个旁路,确保数据的一致性和高效性。本文将在之前讨论的 Redis 主动更新…...

杭州市有哪些大学能够出具论文检索报告?

杭州市具有查收查引服务的学校有浙江大学、杭州电子科技大学、浙江工业大学、杭州师范大学等高校。 1、浙江大学图书馆 浙江大学图书馆提供文献查收查引服务,包括查询学术论文被SCIE、SSCI、A&HCI、EI、CPCI-S、CPCI-SSH、CSSCI、CSCD等国内外权威数据库收录和…...

SpringBootWeb 登录认证(day12)

登录功能 基本信息 请求参数 参数格式:application/json 请求数据样例: 响应数据 参数格式:application/json 响应数据样例: Slf4j RestController public class LoginController {Autowiredpriva…...

使用AOP在切面逻辑中无法获取到requesetBody

使用场景:在接口处理之前,我们需要拿到请求参数,对参数进行校验。注意,这里需要拿到的是原始的请求信息! 一般的获取方式 ServletInputStream inputStream request.getInputStream(); StringBuilder stringBuilder …...

生成模型:变分自编码器-VAE

1.基本概念 1.1 概率 这里有: x为真实图像,开源为数据集, 编码器将其编码为分布参数 x ^ \hat{x} x^为生成图像, 通过解码器获得 p ( x ) ^ \hat{p(x)} p(x)^​: 观测数据的分布, 即数据集所构成的经验分布 p r e a l ( x ) p_{real}(x) preal​(x): …...

Hive sql执行文件合并配置参数

HIVE自动合并输出的小文件的主要优化手段为:HIVE将会启动一个独立的map-reduce任务进行输出文件的merge。 set hive.merge.mapfiles true: 在只有map的作业结束时合并小文件, set hive.merge.mapredfiles true: 在Map-Reduce的任…...

鸿蒙 ArkUI实现地图找房效果

常用的地图找房功能,是在地图上添加区域、商圈、房源等一些自定义 marker,然后配上自己应用的一些筛选逻辑构成,在这里使用鸿蒙 ArkUI 简单实现下怎么添加区域/商圈、房源等 Marker. 1、开启地图服务 在华为开发者官网,注册应用&…...

一套极简易的直流无刷电机(Deng FOC)开发套件介绍

目录 概述 1. 硬件组成介绍 1.1 主要硬件 1.2 电机驱动板介绍 1.3 2208电机模块 1.3.1 参数介绍 1.3.2 认识2208电机 2 驱动板接口介绍 2.1 PCB接口(MCU)定义 2.2 功能描述 2.2.1 电机驱动接口 2.2.2 编码器接口 2.2.3 电流输入引脚接口 2.…...

Inception模型详解及代码分析

模型背景 Inception系列模型由Google团队提出,旨在解决CNN分类模型面临的两大挑战: 如何在增加网络深度的同时提升分类性能 如何在保证分类准确率的同时降低计算和内存开销 Inception V1通过引入 并行卷积结构 和 1x1卷积 ,巧妙地解决了这两个问题,在保证模型质量的前提下…...

Springboot AOP 每个接口运行前 修改入参

控制台log输出为何频频失踪?   wxss代码为何频频失效?   wxml布局为何乱作一团?   究竟是道德的沦丧?还是人性的缺失?   让我们一起来 走 跑进科学 前言 麻蛋被这个功能恶心好久 终于解决了 特此记录一下 正文 Before("authCut()")public void cutProc…...

课题推荐——基于GPS的无人机自主着陆系统设计

关于“基于GPS的无人机自主着陆系统设计”的详细展开,包括项目背景、具体内容、实施步骤和创新点。如需帮助,或有导航、定位滤波相关的代码定制需求,请点击文末卡片联系作者 文章目录 项目背景具体内容实施步骤相关例程MATLAB例程python例程 …...

【深度学习】在深度学习训练过程中,数据量太少会导致模型过拟合还是欠拟合?

过拟合与欠拟合 过拟合 : 是指在训练集上表现非常好,但是在新的数据集上表现较差的现象。具体来说,模型在训练集上过度学习,捕捉了数据中的噪声和偶然性,导致它对训练数据的拟合非常精确,但缺乏泛化能力,无…...

js迭代器模式

以前JS原生的集合类型数据结构,只有Array(数组)和Object(对象); 而ES6中,又新增了Map和Set。四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们&…...

测试开发基础知识2

10.什么是等价类和边界值法? 1)等价类划分 等价类划分是将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类划分认为如果一个测试用例在某个等价类中的一个值上通过测试,那么它在这个类中的其他值上也…...

PromQL基础使用和案例解析

文章目录 PromQL简介数据类型1、瞬时数据 (Instant vector)2、区间数据 (Range vector)➢ Time Durations➢ Offest modifier➢ modifier 3、标量数据 (Scalar)4、字符串 (String) 条件匹配1、完全匹配2、正则匹配 运算符1、比较运算符2、算数运算符3、逻辑运算符4、聚合运算符…...

使用Python实现基于机器学习的垃圾邮件过滤

友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将深…...

MySql根据经纬度查询距离

一、搭建测试 创建数据表() CREATE TABLE sys_test (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键ID,name varchar(20) DEFAULT NULL COMMENT 名称,longitude decimal(10,6) DEFAULT NULL COMMENT 经度,latitude decimal(10,6) DEFAULT NULL COMMENT 维度,PRIMARY KEY (id…...

Aviatrix Controller 未授权命令注入漏洞复现(CVE-2024-50603)

0x01 产品简介 Aviatrix Controller是一款强大的云网络管理平台,提供简化的跨云网络管理、自动化配置、安全策略、流量监控等功能,帮助企业实现更加灵活、安全和高效的云网络架构,特别适用于多云和混合云环境。主要用于编排和管理各种网络和连接解决方案。它为用户提供了一…...

数据结构与算法之二叉树: LeetCode 109. 有序链表转换二叉搜索树 (Ts版)

有序链表转换二叉搜索树 https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/description/ 描述 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为 平衡 二叉搜索树 示例 1 输入: head [-10,-3,0,5,9] 输出:…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...