创建vue3项目步骤
脚手架创建项目:
pnpm create vue

- Cd 项目名称
- 安装依赖:Pnpm i
- Pnpm Lint:修复所有文件风格 ,不然eslint语法警告报错要双引号
- Pnpm dev启动项目
拦截错误代码提交到git仓库:提交前做代码检查
pnpm dlx husky-initpnpm install
目录调整:

访问权限控制router.ts:
前置守卫:
import { userStore } from '@/stores';
// vue3的前置导航
router.beforeEach((to,from)=>{
// next现在可选,next()放行 next(‘/login’)跳转指定路由路径
// 返回false取消
// 返回true|undefined放行
// 返回路由地址(对象格式)重定向//获取token的
const store=userStore()
// 白名单:不需要登陆的页面可以直接访问
const wihteList=['/login','register']
// 如果没有token并且没有白名单,就重定向到登陆页面
if(!store.token&&!wihteList.includes(to.path)) return '/login'})
后置守卫页面标题:
router.afterEach((to)=>{document.title=`sealtool-${to.meta.title||''}`
})
type文件定义vue-router.d.ts文件类型:
import 'vue-router'declare module 'vue-router'{扩展vue-router里面得routeMeta接口里面得属性title类型interface RouteMeta{title?:string}
}

手机端安装命令:
1.引入vant组件:
Pnpm add vant
2.main.ts引入样式:
import 'vant/lib/index.css'
移动端适配:单位自动转为vw,进行等比例缩放
pnpm i postcss-px-to-viewport -D
新建一个postcss.config.js项目文件:加上一些插件的配置
Vant组件自动注册:
好处:components文件下和vant框架都可以自动注册,不用手动导入
pnpm add unplugin-vue-components -D
主题定制css:
main.scss文件:
定义全局变量::root{ 变量名字 : #069; }
局部变量: 选择器(.)类名{ 变量名字 : #069; }
使用变量的方法: color:var(变量名字)

覆盖vant主题色方法:

持久化:
pnpm i pinia-plugin-persistedstate
persidt:true 可以开启持久化存储

pinia如何统一管理:
1.stores/index.ts引入持久化存储
import {createPinia} from 'pinia'
import presist from 'pinia-plugin-persistedstate'const pinia =createPinia()
pinia.use(presist)export default pinia// 将user模块里面所有的按需导出
// export * from './modules/user'
2.main.ts导出pinia
import { createApp } from 'vue'
// pinia
import pinia from '@/stores'
const app = createApp(App)
app.use(pinia)
Axios请求工具:
pnpm i axios
utils文件夹里面新建request.ts文件:设置请求拦截器和响应拦截器
import axios from 'axios'
import type { AxiosError } from 'axios'
import {showFailToast} from 'vant'
import { userStore } from '@/stores';//1.创建根地址和时间
const api = axios.create({baseURL: '',timeout: 10000
})api.interceptors.request.use((request) => {// 2.全局拦截请求发送前提交的参数const userStores = userStore()// 设置请求头if (request.headers) {if (userStores.isLogin) {request.headers.Authorization = `Bearer ${userStores.token}`}}return request},
)api.interceptors.response.use((response) => {//3.处理业务失败if (response.data.code === 后端规定的失败数字是多少) {// 这里做错误提示showFailToast(response.data.msg||'业务失败')return Promise.reject(response.data.msg)}// 4.摘取核心响应数据return Promise.resolve(response.data)},(error:AxiosError) => {// 5.处理401错误if (error.response?.status === 401) {// 清除本地信息// 跳转到登录页面 ,携带当前访问页面地址router.push({path:'/login',query:{returnUrl:router.currentRoute.value})}else {let message = error.messageif (message === 'Network Error') {message = '后端网络故障'}else if (message.includes('timeout')) {message = '接口请求超时'}else if (message.includes('Request failed with status code')) {message = `接口${message.substr(message.length - 3)}异常`}}return Promise.reject(error)},
)export default api//设置类型
type Data<T> = {code:number,msg:string,total?: number,data:T,
}type Method = 'get' | 'post' | 'put' | 'delete' | 'patch'
export const request=<T>(url: string,method: Method='get',submitData?: object
)=>{// 参数:地址,请求方式,提交的数据// 返回:promisereturn api.request<any,Data<T>>({url,method,[method.toUpperCase() === 'GET' ? 'params' : 'data'] : submitData})
}
打包svg图标配置:
官网地址:https://github.com/vbenjs/vite-plugin-svg-icons
pnpm install vite-plugin-svg-icons -D
配置:vite.config.tsimport { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'createSvgIconsPlugin({iconDirs: [path.resolve(process.cwd(), 'src/icons')],
})
导入:main.ts
import 'virtual:svg-icons-register'
全局使用:se-icon.vue文件:
<template><div><svg aria-hidden="true" class="seal-icon"><use :href="`#icon-${name}`" /></svg></div>
</template><script setup lang="ts">
import { ref, reactive, toRefs, onMounted } from 'vue'
defineProps<{name: string
}>()</script>
<style scoped lang="less">
.seal-icon {width: 24px;height: 24px;
}//和字体大小一样</style>
组件中使用
<se-icon :name="`icon_touxiangbeijing`"></se-icon>
安装进度条:要安装两个命令
pnpm i nprogress
pnpm i @types/nprogress -D
vue-router.ts文件配置:
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'//去掉转圈的那个环形圈
NProgress.configure({showSpinner:false
})// vue3的前置导航
router.beforeEach((to)=>{
//开启进度条NProgress.start()
})router.afterEach((to)=>{
document.title=`sealtool-${to.meta.title||''}`
//关闭进度条NProgress.done()
})//全局css,改变进度条颜色
#nprogress .bar {background-color: #f8e1f1 !important;
}
相关文章:
创建vue3项目步骤
脚手架创建项目: pnpm create vue Cd 项目名称安装依赖:Pnpm iPnpm Lint:修复所有文件风格 ,不然eslint语法警告报错要双引号Pnpm dev启动项目 拦截错误代码提交到git仓库:提交前做代码检查 pnpm dlx husky-in…...
尽量通俗易懂地概述.Net U nity跨语言/跨平台相关知识
本文参考来自唐老狮,Unity3D高级编程:主程手记,ai等途径 仅作学习笔记交流分享 目录 1. .Net是什么? 2. .Net框架的核心要点? 跨语言和跨平台 .Net x Unity跨平台发展史 Net Framework 2002 Unity跨平台之 Mono 2004 Unity跨平台之 IL2CPP 2015 二者区别 .NET Core …...
【AlphaFold3】开源本地的安装及使用
文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…...
vue2/vue3中使用的富文本编辑器vue-quill
前言: 整理下常用的富文本编辑器工具。 vue3: 实现效果: 实现步骤: 1、安装插件, 编辑器核心插件 vueup/vue-quill yarn add pnpm i npm i cnpm i vueup/vue-quill vueup/vue-quill 2、安装选择性插件 &a…...
论文阅读《BEVFormer v2》
BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision 目录 摘要1 介绍2 相关工作2.1 BEV三维目标检测器 摘要 我们提出了一种具有透视监督的新型鸟瞰图(BEV)检测器,其收敛速度更快…...
自动化运维(k8s):一键获取指定命名空间镜像包脚本
前言:脚本写成并非一蹴而就,需要不断的调式和修改,这里也是改到了7版本才在 生产环境 中验证成功。 该命令 和 脚本适用于以下场景:在某些项目中,由于特定的安全或政策要求,不允许连接到你的镜像仓库。然而…...
HarmonyOS ArkUI(基于ArkTS) 开发布局 (上)
一 ArkUI(基于ArkTS)概述 基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架,提供了构建应用UI所必需的能力 点击详情 特点 开发效率高,开发体验好 代码简洁:通过接近自然语义的方式描述UI&#x…...
第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)
本芯片使用的是STM32F103C8T6型号 STM32F103C8T6是STM32F1系列中的一种较常用的低成本ARM Cortex-M3内核MCU,具有丰富的通信接口,包括USART、SPI、I2C等。下面是该芯片上通信接口的管脚分布、每个接口的工作模式、常用应用场景和注意事项。 1. USART (通…...
5. langgraph中的react agent使用 (从零构建一个react agent)
1. 定义 Agent 状态 首先,我们需要定义 Agent 的状态,这包括 Agent 所持有的消息。 from typing import (Annotated,Sequence,TypedDict, ) from langchain_core.messages import BaseMessage from langgraph.graph.message import add_messagesclass …...
uniapp vue3的下拉刷新和上拉加载
开启页面的下拉刷新,注意这个不是可滚动视图的下拉刷新. 一般页面建议使用页面外的,不要使用scroll-view里面的下拉刷新. pages: "pages": [ {"path": "pages/index/index","style": {"navigationBarTitleText": "首…...
STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 本系统基于STM32微控制器和Zigbee无线通信技术,设计了…...
Vue 3 中的原生事件监听与组件事件处理详解
Vue 3 中的原生事件监听与组件事件处理完全指南 在 Vue 3 中,事件监听和事件处理是组件交互中的关键部分。Vue 提供了一套简单而强大的事件处理机制,可以方便地监听 DOM 原生事件和组件自定义事件。本篇文章将详细介绍 Vue 3 中事件的使用,包…...
Flink Source 详解
Flink Source 详解 原文 flip-27 FLIP-27 介绍了新版本Source 接口定义及架构 相比于SourceFunction,新版本的Source更具灵活性,原因是将“splits数据获取”与真“正数据获取”逻辑进行了分离 重要部件 Source 作为工厂类,会创建以下两…...
2024年了,TCP分析工具有哪些?
TCP分析工具广泛应用于网络调试、性能分析和协议学习。以下是一些常用的TCP分析工具,它们各有特点,适用于不同的场景: Wireshark - 这是一个非常强大的网络协议分析器,支持图形界面,可以捕获和分析TCP流量,…...
SRP 实现 Cook-Torrance BRDF
写的很乱! BRDF(Bidirectional Reflectance Distribution Function)全称双向反射分布函数。辐射量单位非常多,这里为方便直观理解,会用非常不严谨的光照强度来解释说明。 BRDF光照模型,上反射率公式&#…...
MySQL慢日志
慢查询日志顾名思义就是查询慢的sql语句可以记录到一个日志文件里,至于有多慢才会被记录,默认是10秒,但也可以通过系统配置来更改,慢日志在做系统优化时是一个非常好用的工具 #是否开启慢日志 show variables like slow_query_log…...
Flutter网络通信-封装Dio
前言 dio 是一个强大的 Dart HTTP 请求库,支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 Dio的pub地址为:dio | Dart package 封装要求 能够使用get、post、put、patch、delete、…...
matlab 读取csv
需要跳过第一行表头等信息 1、读取整个文件 csvread(FILENAME)%文件路径 文件名2、指定起始位置 csvread(FILENAME, R, C)%从文件的第R行和第C列开始读取数据 逗号分开3、指定数据范围 csvread(FILENAME, R, C, [R1 C1 R2 C2])%读取从(R1, C1)到(R2, C2)范围内的数据注意&am…...
网络层9——虚拟专用网VPN和网络地址转换NAT
目录 一、为什么有虚拟专用网? 二、如何理解“虚拟专用网”? 三、IP隧道技术实现虚拟专用网 四、网络地址变换 一、为什么有虚拟专用网? 第一,IPv4只有32位,最多有40亿个全球唯一的IP地址数量不够,无法…...
开源科学工程技术软件介绍 – EDA工具KLayout
link 今天向各位知友介绍的 KLayout是一款由德国团队开发的开源EDA工具。 KLayout是使用C开发的,用户界面基于Qt。它支持Windows、MacOS和Linux操作系统。安装程序可以从下面的网址下载: https://www.klayout.de/build.html KLayout图形用户界面&…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...


