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

news2025/2/22 8:20:47

利用 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中进行导出了。

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

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

相关文章

Vue的简单入门 一

声明:本版块根据B站学习,创建的是vue3项目,用的是vue2语法风格,仅供初学者学习。 目录 一、Vue项目的创建 1.已安装15.0或更高版本的Node.js 2.创建项目 二、 简单认识目录结构 三、模块语法中的指令 1.v-html 1.文本插值…

VMware Workstate 的 Ubuntu18 安装 vmware tools(不安装没法共享)

在共享主机路径后,可以在: /mnt/hgfs/下方找到共享的文件。但没有安装vmware tool时是没法共享的。 如何安装vmware tool,网上版本很多。这里记录一下: VMware Workstation 17 Pro,版本:17.6.0 虚拟机系统…

GC 基础入门

什么是GC(Garbage Collection)? 内存管理方式通常分为两种: 手动内存管理(Manual Memory Management)自动内存管理(Garbage Collection, GC) 手动内存管理 手动内存管理是指开发…

UE求职Demo开发日志#32 优化#1 交互逻辑实现接口、提取Bag和Warehouse的父类

1 定义并实现交互接口 接口定义: // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "UObject/Interface.h" #include "MyInterActInterface.generated.h…

如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题

在安装Qt时,遇到了一些问题,尤其是在Mac上安装Qt后,发现Qt Creator没有出现在应用程序中。通过一些搜索和操作,最终解决了问题。以下是详细的记录和解决方法。 1. 安装Qt后未显示Qt Creator 安装完成Qt后,启动应用程…

多线程基础面试题剖析

一、线程的创建方式有几种 创建线程的方式有两种,一种是继承Thread,一种是实现Runable 在这里推荐使用实现Runable接口,因为java是单继承的,一个类继承了Thread将无法继承其他的类,而java可以实现多个接口&#xff0…

Android设备 网络安全检测

八、网络与安全机制 6.1 网络框架对比 volley: 功能 基于HttpUrlConnection;封装了UIL图片加载框架,支持图片加载;网络请求的排序、优先级处理缓存;多级别取消请求;Activity和生命周期的联动(Activity结束生命周期同时取消所有网络请求 …

神经网络的学习 求梯度

import sys, ossys.path.append(os.pardir) import numpy as npfrom common.functions import softmax, cross_entropy_error from common.gradient import numerical_gradient# simpleNet类 class simpleNet:def __init__(self):self.W np.random.rand(2, 3) # 随机形状为2*…

AI向量数据库之LanceDB快速介绍

LanceDB LanceDB 是一个开源的向量搜索数据库,具备持久化存储功能,极大地简化了嵌入向量的检索、过滤和管理。 LanceDB的主要特点 LanceDB 的主要特点包括: 生产级向量搜索:无需管理服务器。 存储、查询和过滤向量、元数据以…

CentOS7 安装配置FTP服务

CentOS7 安装配置FTP服务 CentOS7 安装配置FTP服务1. FTP简介2. 先行准备2.1 关闭防火墙2.2 关闭 SELinux 3.安装FTP软件包4. 创建 FTP 用户及目录4.1 创建 FTP 目录并设置权限4.2 防止 FTP 用户登录 Linux 终端4.3 创建 FTP 用户组及用户4.4 创建 FTP 可写目录 5. 配置ftp服务…

【设计模式】03-理解常见设计模式-行为型模式(专栏完结)

前言 前面我们介绍完创建型模式和创建型模式,这篇介绍最后的行为型模式,也是【设计模式】专栏的最后一篇。 一、概述 行为型模式主要用于处理对象之间的交互和职责分配,以实现更灵活的行为和更好的协作。 二、常见的行为型模式 1、观察者模…

编程题-最大子数组和(中等-重点【贪心、动态规划、分治思想的应用】)

题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 解法一(枚举法-时间复杂度超限): …

本地通过隧道连接服务器的mysql

前言 服务器上部署了 mysql,本地希望能访问该 mysql,但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看,服务器只开放了一个 ssh 端口,并没有开放 3306 监听端口 设置本地免密登录 …

2. grafana插件安装并接入zabbix

一、在线安装 如果不指定安装位置,则默认安装位置为/var/lib/grafana/plugins 插件安装完成之后需要重启grafana 命令在上一篇讲到过 //查看相关帮助 [rootlocalhost ~]# grafana-cli plugins --help //从列举中的插件过滤zabbix插件 [rootlocalhost ~]# grafana…

Linux第107步_Linux之PCF8563实验

使用PCF8563代替内核的RTC,可以降低功耗,提高时间的精度。同时有助于进一步熟悉I2C驱动的编写。 1、了解rtc_time64_to_tm()和rtc_tm_to_time64() 打开“drivers/rtc/lib.c” /* * rtc_time64_to_tm - Converts time64_t to rtc_time. * Convert seco…

功能说明并准备静态结构

功能说明并准备静态结构 <template><div class"card-container"><!-- 搜索区域 --><div class"search-container"><span class"search-label">车牌号码&#xff1a;</span><el-input clearable placeho…

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好&#xff0c;我是老师&#xff0c;看到一个不错的SpringBoot公益众筹爱心捐赠系统&#xff0c;分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前&#xff0c;当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及&#xff0c;本文旨在探讨公益事业…

ML.Net二元分类

ML.Net二元分类 文章目录 ML.Net二元分类前言项目的创建机器学习模型的创建添加模型选择方案训练环境的选择训练数据的添加训练数据的选择训练数据的格式要预测列的选择模型评估模型的使用总结前言 ‌ML.NET‌是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习…

visutal studio 2022使用qcustomplot基础教程

编译 下载&#xff0c;2.1.1版支持到Qt6.4 。 拷贝qcustomplot.h和qcustomplot.cpp到项目源目录&#xff08;Qt project&#xff09;。 在msvc中将它俩加入项目中。 使用Qt6.8&#xff0c;需要修改两处代码&#xff1a; L6779 # if QT_VERSION > QT_VERSION_CHECK(5, 2, …

本地搭建自己的专属客服之OneApi关联Ollama部署的大模型并创建令牌《下》

这里写目录标题 OneApi1、渠道设置2、令牌创建 配置文件修改修改配置文件docker-compose.yml修改config.json到此结束 上文讲了如何本地docker部署fastGtp&#xff0c;相信大家也都已经部署成功了&#xff01;&#xff01;&#xff01; 今天就说说怎么让他们连接在一起 创建你的…