01.vue3大事件——项目初始化、技术介绍

后台数据管理系统 - 项目架构设计

在线演示:https://fe-bigevent-web.itheima.net/login

接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835

接口根路径: http://big-event-vue-api-t.itheima.net

本项目的技术栈 本项目技术栈基于 ES6、vue3、pinia、vue-router 、vite 、axios 和 element-plus

前端技术栈

  • Vue3 compositionAPl
  • pnpm包管理升级
  • Pinia/Pinia持久化处理
  • Eslint+prettier更规范的配置
  • Element Plus(表单校验,表格处理,组件封装)
  • husky(Git hooks.工具)代码提交之前,进行校验
  • 请求模块设计
  • VueRouter4路由设计
  • AI大模型开发一整个项目模块(掌握最新的开发方式)

项目页面介绍

在这里插入图片描述

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

pnpm 包管理器 - 创建项目

一些优势:比同类工具快 2倍 左右(比yarn更快)、节省磁盘空间… https://www.pnpm.cn/

安装方式:

npm install -g pnpm

创建项目:

pnpm create vue    

在这里插入图片描述

选择需要的依赖:router、pinia、ESLint、prettier

ESLint & prettier 配置代码风格

环境同步:

  1. 安装了插件 ESlint,开启保存自动修复(在vue2课程中已经配置过了)
  2. 禁用插件 Prettier,并关闭保存自动格式化(我们使用的是通过包引入的Prettier插件,并不是vscode中的,所以下载过也禁用掉)
// ESlint插件 + Vscode配置 实现自动格式化修复
"editor.codeActionsOnSave": {
    "source.fixAll": true
},
"editor.formatOnSave": false,

配置文件 .eslintrc.cjs(项目中的)

  1. prettier 风格配置 https://prettier.io

    1. 单引号

    2. 不使用分号

    3. 每行宽度至多80字符

    4. 不加对象|数组最后逗号

    5. 换行符号不限制(win mac 不一致)

  2. vue组件名称多单词组成(忽略index.vue)

  3. props解构(关闭)

  rules: {
    'prettier/prettier': [
      'warn',
      {
        singleQuote: true, // 单引号
        semi: false, // 无分号
        printWidth: 80, // 每行宽度至多80字符
        trailingComma: 'none', // 不加对象|数组最后逗号
        endOfLine: 'auto' // 换行符号不限制(win mac 不一致)
      }
    ],
    'vue/multi-word-component-names': [
      'warn',
      {
        ignores: ['index'] // vue组件名称多单词组成(忽略index.vue)
      }
    ],
    'vue/no-setup-props-destructure': ['off'], // 关闭 props 解构的校验
    // 💡 添加未定义变量错误提示,create-vue@3.6.3 关闭,这里加上是为了支持下一个章节演示。
    'no-undef': 'error'
  }

基于 husky 的代码检查工作流

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

检查提交到git的代码是否规范,不规范的代码不能提交,否则别人拉取后运行不了。

husky 配置(在项目终端输入,注意是bash终端)

  1. git初始化 git init

  2. 初始化 husky 工具配置 https://typicode.github.io/husky/

pnpm dlx husky-init && pnpm install
  1. 修改 .husky/pre-commit 文件

npm test修改为pnpm lint

pnpm lint

在bash终端执行:

git add 所提交文件   --将指定文件添加到暂存区
git add .        --将项目添加到暂存区
git commit -m '提交测试'  -- 或者通过侧边栏第三个VSC版本控制工具提交代码

问题:pnpm lint 默认进行的是全量检查,耗时问题,历史问题,同时也会尝试着帮我们进行修复,项目一旦大了,且别人没有进行规范校验,你执行该·命令就会非常耗时并且可能有很多错误。所以我们要学习暂存区eslint校验,这种方式只校验我们写的代码。

lint-staged 配置

  1. 安装
pnpm i lint-staged -D
  1. 配置 package.json
{
  "scripts": {
    // ... 省略 ...
    "lint-staged": "lint-staged"
  },
  // ... 省略 ...
  "lint-staged": {
    "*.{js,ts,vue}": [
      "eslint --fix"
    ]
  }    
}
  1. 修改 .husky/pre-commit 文件
pnpm lint-staged

调整项目目录

默认生成的目录结构不满足我们的开发需求,所以这里需要做一些自定义改动。主要是两个工作:

  • 删除初始化的默认文件
  • 修改剩余代码内容
  • 新增调整我们需要的目录结构
  • 拷贝初始化资源文件,安装预处理器插件
  1. 删除文件

  2. 修改内容

src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  //meta.env.BASE_URL可以在`vite.config.js`中进行配置:base,不配置默认为`/`,第二节有详细讲解
  history: createWebHistory(import.meta.env.BASE_URL), 
  routes: []
})

export default router

src/App.vue

<script setup></script>

<template>
  <div>
    <router-view></router-view>
  </div>
</template>

<style scoped></style>

src/main.js

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'

const app = createApp(App)

app.use(createPinia())
app.use(router)
app.mount('#app')
  1. 新增需要目录 api utils

在这里插入图片描述

  1. 将项目需要的全局样式 和 图片文件,复制到 assets 文件夹中, 并将全局样式在main.js中引入
import '@/assets/main.scss'
  • 安装 sass 依赖
pnpm add sass -D

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑氢储一体化协同的综合能源系统低碳优化》

这个标题涉及到考虑了多个方面的能源系统优化&#xff0c;其中关键的关键词包括"氢储一体化"、"协同"、"综合能源系统"和"低碳优化"。以下是对这些关键词的解读&#xff1a; 氢储一体化&#xff1a; 氢储存&#xff1a; 指的是氢气的存…

网络运维与网络安全 学习笔记2023.11.27

网络运维与网络安全 学习笔记 第二十八天 今日目标 OSPF基本原理、OSPF单区域配置、OSPF多区域配置 特殊区域之Stub、特殊区域之NSSA OSPF基本原理 项目背景 随着企业的发展&#xff0c;网络的规模越来越大&#xff0c;网段的数量越来越多&#xff0c;公司内部的路由器的…

JSP 条件动作标签之choose when otherwise组合标签详解

好 上文JSP 条件动作标签之if标签详解中 我们详细的说了说 if标签 但是 这个if是没有else的 多少对我们的编程习惯没有那么友好 所以 就出现了另外一种语法 由 choose when otherwise组成 和我们java中的switch语句 我们的基本语法就是 外面一个大的choose包裹起来 里面是很多…

VMware上pfsense开源防火墙的下载、安装、简单配置

文章目录 1. pfsense概述1.1. 官方描述1.2. 个人描述 2. pfsense下载2.1. 官网下载 3. pfsense安装3.1. 官网手册3.2. 安装步骤 4. pfsense配置4.1. 默认账号密码4.2. 初始化配置4.3. 切换语言 5. 简单测试5.1. 调整测试网络5.2. 测试结果 6. 虚拟机操作界面讲解7. 最后 1. pfs…

MySQL 高可用架构

MySQL 是实际生产中最常用的数据库&#xff0c;生产环境数据量极为庞大&#xff0c;对性能和安全要求很高&#xff0c;单机的 MySQL 是远远达不到的&#xff0c;所以必须搭建一个主从复制架构&#xff0c;同时可以基于一些工具实现高可用架构&#xff0c;在此基础上&#xff0c…

基于python协同过滤推荐算法的电影推荐与管理系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 电影推荐与管理系统是一个基于Python的协同过滤推荐算法的应用&#xff0c;它可以帮助用户根据他们的兴趣和偏好进行…

2016年五一杯数学建模C题二孩政策问题解题全过程文档及程序

2016年五一杯数学建模 C题 二孩政策问题 原题再现 多年来实施的严、紧计划生育政策对控制人口增长起到关键作用。在优生优育政策的指引下&#xff0c;我国人口质量显著提高&#xff0c;但也带来了不利影响&#xff0c;生育率偏低、男女比例失衡、人口老龄化情况严重等问题。2…

Linux 常用基本命令

文章目录 7.1 帮助命令7.1.1 man 获得帮助信息7.1.2 help 获得shell内置命令的帮助信息7.1.3 常用快捷键 7.2 文件目录类7.2.1 pwd 显示当前工作目录的绝对路径7.2.2 ls 列出目录的内容7.2.3 cd 切换目录7.2.4 mkdir 创建一个新的目录7.2.5 rmdir 删除一个空的目录7.2.6 touch …

【JavaEE】多线程 (2) --线程安全

目录 1. 观察线程不安全 2. 线程安全的概念 3. 线程不安全的原因 4. 解决之前的线程不安全问题 5. synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使⽤⽰例 1. 观察线程不安全 package thread; public class ThreadDemo19 {p…

ICMPv6报文与邻居状态跟踪

ICMPv6报文 ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。 在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息…

计算一个Series序列的n阶滞后相关系数Series.autocorr()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算一个时间序列的 n阶滞后自相关系数 Series.autocorr(n) [太阳]选择题 以下代码的说法中正确的是? import pandas as pd s1 pd.Series([1,2,3,4,5,6]) print("【显示】s1:\n",…

【JAVA学习笔记】71 - JDBC入门

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter25/src/com/yinhai/dao_ 一、JDBC概述 1.基本介绍 1. JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题。 2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动…

opencv-利用DeepLabV3+模型进行图像分割去除输入图像的背景

分离图像中的人物和背景通常需要一些先进的图像分割技术。GrabCut是一种常见的方法&#xff0c;但是对于更复杂的场景&#xff0c;可能需要使用深度学习模型。以下是使用深度学习模型&#xff08;如人像分割模型&#xff09;的示例代码&#xff1a; #导入相关的库 import cv2 …

VMware上面安装部署centos7镜像系统【详细含镜像】

VMware上面安装部署centos7镜像系统【详细含镜像】 废话不多说直接开始 下载centos7镜像 网上有好多&#xff0c;但是我相信来看小编文章的基本上应该都有centos7的镜像了吧&#xff0c;毕竟咱们都是同一类人&#xff0c;哈哈不卖关子了&#xff0c;小编直接给大家一个百度云盘…

OpenCV项目开发实战--基本图像分割图生成器

欢迎回到我们有关 OpenCV 的系列文章以及我们如何利用其强大的图像预处理功能。在我们之前的文章的基础上,今天我们向您展示如何创建基本的图像分割图生成器。 具体来说,我们的图像掩模应该帮助识别每个像素是否: 背景的一部分(指定值为0)在感兴趣的对象的边缘(指定值 …

答题活动小程序竞品分析

答题小程序竞品分析 答题活动小程序竞品分析 知识竞赛小程序竞品分析 ~ 从2020年开始&#xff0c;机缘巧合&#xff0c;我开始涉及答题小程序的开发&#xff0c;从最初的刷题场景到答题活动场景&#xff0c;已经走过了三个年头&#xff0c;这期间我开发的答题小程序产品也逐…

laravel8中常用路由使用(笔记四)

目录 1、框架路由目录统一放该目录 2、基本路由,路由都调用Route方法 3、控制器使用路由 4、路由参数 5、路由组 6、命名路由 7、命令查看当前路由列表 8、路由缓存 在Laravel 8中&#xff0c;路由定义了应用程序中接受请求的方式。它们定义了URL和相应的控制器方法之间的…

ros2智能小车中STM32地盘需要用到PWM的模块

我做的地盘比较简单&#xff0c;使用了一下模块&#xff1a; 4个直流减速电机&#xff0c;&#xff08;每个模块用到了一个PWM&#xff09;---这会通过L298N的ENA,ENB来实现控制 光电对射测速模块&#xff08;不用PWM) 超声波测距模块&#xff08;不用PWM&#xff0c;只需要…

Ceph----CephFS文件系统的使用:详细实践过程实战版

CephFS 介绍 是一个基于 ceph 集群 且兼容 POSIX 标准的文件系统。 创建 cephfs 文件系统时 需要在 ceph 集群中添加 mds 服务&#xff0c;该服务 负责处理 POSIX 文件系统中的 metadata 部分&#xff0c; 实际的数据部分交由 ceph 集群中的 OSD 处理。 cephfs 支持以内核模块…

中南大学2021级云计算复习笔记

选择题 20分 10个 填空题 10分 10个 判断题 10分 5个 简答题 20分 4个 编程题 40分 2个 云计算基础 云计算的概念&#xff1a;云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上&#xff0c;使各种应用系统能够根据需要获取计算力、存储空间和信息服…