vue3+ts+vite创建的后台管理系统笔记

Vue3+ Vite + Element-Plus + TypeScript 从0到1搭建企业级后台管理系统(前后端开源):参考有来科技学习搭建项目

  • 创建项目
  • bug汇总,知识点
    • src 路径别名配置和tsconfig.json文件报错【这个不配置好,会引起其他页面引用时报错:见--整合 Pinia】:
    • 整合 Pinia 【参考-- src 路径别名配置和tsconfig.json文件报错】
    • 整合 Axios
    • 新建的文件或者安装的包,文件引用有报错,关闭vscode,重启下即可。
    • 报错Cannot find name 'ElMessage'.ts(2304)
    • vue3的路由中如何使用transition;Transition + Component实现路由跳转浅入浅出效果
    • vue-route路由meta对象参数说明
    • ts中的?、??、!、!!
    • defineOptions
    • 代码统一规范:(https://blog.csdn.net/u013737132/article/details/145608723)
    • 创建项目的过程用npm,都配好后(包括代码规范配置,npm i 安装依赖),之后可以改为pnpm,不然过程中可能有bug![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d70584ba276f4d029d3038beb95c888c.png)
    • 配置 prettier:保存自动格式化
    • 配置代码规范后:浏览器不自动打开,pnpm强制使用失效情况
    • 项目一开始就要确定用npm 还是pnpm,后续来回切换可能会有报错。
    • 报错:the teiminal process 'xxx'terminated with exit code:2
    • 启动项目不能自动打开浏览器
    • vue/react项目npm迁移pnpm,同时兼容npm
    • Property ‘xxx‘ does not exist on type {}问题解决方法
    • const提示报错:Definitions of the following identifiers conflict with those in another file:xxx:Conflicts are in this file.
    • 启动后有报错:Uncaught ReferenceError: __APP_INFO__ is not defined
    • Property 'xxx' does not exist on type 'never'.
    • 提交代码时报错
    • 高德地图报错 AMap.Geocoder is not a construct:看下面模块【地图插件的引入有两种】
    • 地图插件的引入有两种:
    • 定位时报错:Get ipLocation failed.Get geolocation timeout.
    • 高德地图定位报错,用其他方法代替即可:
    • vue3项目本地开启https协议访问(vite)
    • 前端实现下载图片:html2canvas、html-to-image
    • 相比之前版本去掉了
    • 未完待续······

参考:
项目详细文档:
稀土挖金:https://juejin.cn/post/7228990409909108793#heading-1
csdn: https://blog.csdn.net/u013737132/article/details/130191394
vite文档:
https://cn.vitejs.dev/guide/#scaffolding-your-first-vite-project
gitee项目源码:
https://gitee.com/youlaiorg/vue3-element-admin

版本信息:
node: v20.18.0
npm: 10.8.2
pnpm: v10.8.0
在这里插入图片描述

创建项目

npm init vite@latest power_front --template vue-ts
在这里插入图片描述
生成的项目目录:

在这里插入图片描述

package.json文件:

{"name": "power_front","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite","build": "vue-tsc -b && vite build","preview": "vite preview"},"dependencies": {"vue": "^3.5.13"},"devDependencies": {"@vitejs/plugin-vue": "^5.2.1","@vue/tsconfig": "^0.7.0","typescript": "~5.7.2","vite": "^6.2.0","vue-tsc": "^2.2.4"}
}

文件创建时tsconfig.json原始内容:

参考配置:
https://blog.csdn.net/qq_45954390/article/details/142780564
https://blog.csdn.net/qq_45954390/article/details/144606262

其他可参考的博客:
https://juejin.cn/post/7418530380194201626
https://www.cnblogs.com/zhouxiaobai/p/17564807.html
https://blog.csdn.net/azl397985856/article/details/108090980
https://blog.csdn.net/s178435865/article/details/131417356
https://blog.csdn.net/2301_79568124/article/details/137783628

{"files": [],//指定待编译文件"references": [{ "path": "./tsconfig.app.json" },{ "path": "./tsconfig.node.json" }]
}references 属性作用是指定工程引用依赖。
在项目开发中,有时候我们为了方便将前端项目和后端node项目放在同一个目录下开发,两个项目依赖同一个配置文件和通用文件,但我们希望前后端项目进行灵活的分别打包,那么我们可以进行如下配置:files 属性作用是指定需要编译的单个文件列表。
默认包含当前目录和子目录下所有 TypeScript 文件参考:https://blog.csdn.net/azl397985856/article/details/108090980

bug汇总,知识点

src 路径别名配置和tsconfig.json文件报错【这个不配置好,会引起其他页面引用时报错:见–整合 Pinia】:

配置路径别名时,引入组件报错:cannot find module ‘’ or its corresponding type declarations
但可以正常渲染,跟tsconfig.json报错一块解决。

在这里插入图片描述
tsconfig.json有报错
问题:按照有来项目的的tsconfig.json配置,tsconfig.json中对tsconfig.app.json和tsconfig.app.json引用有报错。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决方法参考:https://blog.csdn.net/qq_40244755/article/details/146768391
在tsconfig.app.json和tsconfig.app.json文件中,分别添加"composite": true并确保没有设置"noEmit": true:

三个文件的详细配置如下:

tsconfig.json文件配置

//默认的配置
// {
//   "files": [],//明确列出要编译的文件
//   "references": [//项目引用,是 TS 3.0 中的一项新功能,它允许将 TS 程序组织成更小的部分。使用小技巧:在填写路径时 ** 表示任意目录, * 表示任意文件。
//     { "path": "./tsconfig.app.json" },
//     { "path": "./tsconfig.node.json" }
//   ],
// }//有来科技和【https://blog.csdn.net/qq_45954390/article/details/144606262】、【https://blog.csdn.net/qq_45954390/article/details/142780564】
{"compilerOptions": {"target": "esnext", // 目标语言的版本"module": "esnext",// 指定生成代码的模板标准"moduleResolution": "node", // 模块解析策略,ts默认用node的解析策略,即相对的方式导入"lib": ["esnext", "dom"],// 编译时引入的 ES 功能库,包括:es5 、es6、es7、dom 等。// 如果未设置,则默认为: target 为 es5"baseUrl": ".", // 模块解析根路径,默认为 tsconfig.json 位于的目录"paths": {// 路径映射,相对于baseUrl"@/*": ["src/*"]},// 严格性和类型检查相关配置"strict": true,// 开启所有严格的类型检查"skipLibCheck": true,// 是否跳过声明文件的类型检查,这可以在编译期间以牺牲类型系统准确性为代价来节省时间,默认:false"forceConsistentCasingInFileNames": true,// 是否区分文件系统大小写规则// 模块和兼容性相关配置"allowSyntheticDefaultImports": true,//允许从那些使用 CommonJS(require)导出模块的库中导入默认导出(default exports)"esModuleInterop": true,// 允许export=导出,由import from 导入 【解决了在 TypeScript 中使用 CommonJS 模块和 ECMAScript 模块相互兼容的一些问题】"resolveJsonModule": true,//是否解析 JSON 模块// 调试和兼容性相关配置"sourceMap": true,// 生成目标文件的sourceMap文件"useDefineForClassFields": true,// useDefineForClassFields 为 true 时,TypeScript 编译器会生成符合 ECMAScript 标准的类字段。useDefineForClassFields 有利于我们平滑地升级 TypeScript 。"allowJs": true, // 允许编译器编译JS,JSX文件// 类型声明相关配置// "types": ["node", "vite/client", "element-plus/global"]"types": ["node", "vite/client",],// 加载的声明文件包// "composite":true,// 是否编译构建引用项目},// 指定需要被编译的TypeScript文件和需要被排除的文件// 指定要编译的文件或目录"include": ["mock/**/*.ts", "src/**/*.ts", "src/**/*.vue", "vite.config.ts"],//如果不指定include属性,‌则默认当前目录下除了exclude之外的所有.ts、‌.d.ts、‌.tsx文件都会被编译。‌// 指定不需要编译的文件或目录"exclude": ["node_modules", "dist"],// "composite":true,// 是否编译构建引用项目//用于指定项目之间的引用关系,当前项目的 tsconfig.json 文件引用了位于相对路径 "./tsconfig.node.json" 的另一个 TypeScript 配置文件"references": [{ "path": "./tsconfig.app.json" },{ "path": "./tsconfig.node.json" }], 
}

tsconfig.app.json配置:

// {
//   "extends": "@vue/tsconfig/tsconfig.dom.json",
//   "compilerOptions": {
//     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",//     /* Linting */
//     "strict": true,
//     "noUnusedLocals": true,
//     "noUnusedParameters": true,
//     "noFallthroughCasesInSwitch": true,
//     "noUncheckedSideEffectImports": true,//     "noImplicitAny": false,//     "emitDeclarationOnly": true,// 仅生成声明文件,不编译输出如 JS 文件。√
//     "composite": true,  // 与 TypeScript 项目可以进行增量构建有关 √
//     "noEmit": false //是否不生成编译后的js文件,默认值是false,即生成 【确保没有 "noEmit": true】 √
//   },
//   "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
// }// 按照 https://juejin.cn/post/7418530380194201626 配置的{"extends": "./tsconfig.json", // 继承主配置文件"compilerOptions": {// "emitDeclarationOnly": true,// 仅生成声明文件,不编译输出如 JS 文件。√"composite": true,  // 与 TypeScript 项目可以进行增量构建有关 √

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

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

相关文章

指针01 day13

十三:指针变量 一:数据类型 ​ 指针类型---------对应处理的数据是指针 (地址)这种数据 ​ 整型类型---------对应处理的数据是整数这种类型 二:定义指针类型的变量 ​ 语法: 基类型(1) *(…

基于深度学习的智能文本生成:从模型到应用

前言 随着人工智能技术的飞速发展,自然语言处理(NLP)领域取得了显著的进展。其中,智能文本生成技术尤其引人注目。从聊天机器人到内容创作,智能文本生成不仅能够提高效率,还能创造出令人惊叹的内容。本文将…

Oracle业务用户的存储过程个数及行数统计

Oracle业务用户的存储过程个数及行数统计 统计所有业务用户存储过程的个数独立定义的存储过程定义在包里的存储过程统计所有业务用户存储过程的总行数独立定义的存储过程定义在包里的存储过程通过DBA_SOURCE统计类型个数和代码行数📖 对存储过程进行统计主要用到以下三个系统…

多线程安全:核心解决方案全解析

在多线程环境下保证共享变量的线程安全,需解决原子性、可见性、有序性三大问题。以下是核心解决方案及适用场景: 一、同步锁机制(互斥访问) synchronized 关键字 原理:通过 JVM 监视器锁(Monitor)确保同一时间仅一个线程访问临界区。示例:public class Counter {privat…

2025-06-01-Hive 技术及应用介绍

Hive 技术及应用介绍 参考资料 Hive 技术原理Hive 架构及应用介绍Hive - 小海哥哥 de - 博客园https://cwiki.apache.org/confluence/display/Hive/Home(官方文档) Apache Hive 是基于 Hadoop 构建的数据仓库工具,它为海量结构化数据提供类 SQL 的查询能力&#xf…

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集

目录 一、引言:当爬虫遭遇"地域封锁"二、背景解析:分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计:Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…

HashMap真面目

背景 今天数据采集项目碰到一个性能问题,3000多个采集点,每一个采集点每秒送一个数据,接收到数据之后首先需要内存中做缓存,之后有一系列的业务分析处理,所以,对系统性能要求比较高。 最近几天发现服务器…

STM32CubeMX-H7-19-ESP8266通信(中)--单片机控制ESP8266实现TCP地址通信

前言 上篇文章我们已经能够使用串口助手实现esp8266的几种通信,接下来我们使用单片机控制实现。这篇文章会附带教程,增加.c和,.h,把串口和定时器放到对应的编号,然后调用初始化就可以使用了。 先讲解,然后末尾再放源码…

欧盟RED网络安全标准EN 18031-2的要求

欧盟RED网络安全标准EN 18031-2的要求 欧盟RED网络安全标准EN 18031-2的要求 ​ 适用产品范围: 能够处理个人隐私数据的可联网无线电设备。 不具备联网能力的三类无线电设备:玩具、儿童护理类设备、可穿戴类设备。 主要测试与评估内容: EN…

一起了解--CAST函数

CAST函数在SQL中用途广泛,不仅可以转换为数值类型,还可以在多种场景下用于数据类型转换。以下是一些常见的用途和示例: 类型转换 使用CAST函数可以在查询数据库时根据需要调整数据格式或类型 CAST(expression AS target_type) expression …

(50)课71:查看指定 query_id 的 SQL 语句的执行各个阶段的耗时情况 show profile for query query_id;

(137)查看指定 query_id 的 SQL 语句的执行各个阶段的耗时情况 show profile for query query_id : (138) 谢谢

AWS中国云的定时任务(AWS EventBridge+AWS Lambda)

问题 最近有一个每天在凌程定时同步数据给第三方系统的需求。需要使用AWS EventBridge和AWS Lambda结合的方式来同步数据给第三方系统。 思路 使用Python的ORM框架(例如:SQLAlchemy)查询到需要同步的数据,然后,使用http客户端(…

开源PSS解析器

本章介绍开源PSS解析工具: 1. PSSTools语法解析器,这个工具仅包含一个语法解析器。 2. gen-pss,实现了语法解析器,和简单的Test realization,没有约束求解器。 本文将改造并使用gen-pss来生成C测试用例&#xff0…

《linux2.4 内存管理》:第 2 章 描述物理内存

Linux 适用于多种体系结构,需用体系结构无关方式描述内存。本章介绍影响 VM 行为的内存簇、页面和标志位结构。 非一致内存访问(NUMA):在 VM 中,大型机器内存分簇,依簇与处理器距离,访问代价不…

数据湖是什么?数据湖和数据仓库的区别是什么?

目录 一、数据湖是什么 (一)数据湖的定义 (二)数据湖的特点 二、数据仓库是什么 (一)数据仓库的定义 (二)数据仓库的特点 三、数据湖和数据仓库的区别 (一&#…

Smart Form Adobe form

强制更改内表:TNAPR se16-> Smart Form总览 Smart form 变量格式说明: &symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位 &symbol (n)& 只显示前N位 &symbol (S)& 忽略正负号 &symbol (<)& 符号在…

Linux 内核学习(11) --- Linux 链表结构

文章目录 Linked List 简介Linked List 操作方法链表头结点初始化创建链表节点添加节点到链表中从链表中删除节点从链表中替换节点移动链表中的节点检查链表链表遍历demo 实例 Linked List 简介 链表是一种数据结构&#xff0c;由一系列节点组成&#xff0c;每个节点包含数据部…

一分钟部署nginx-公网IP访问内网

前言 服务器内网下有nacos cluster&#xff08;3个节点&#xff09;&#xff0c;开放到公网并指定公司网络访问需要配置三次IP白名单&#xff0c;因此需要简化流程&#xff0c;通过nginx反向代理只配置1次IP白名单。 现在通过docker容器模拟环境&#xff0c;准备1台云服务器。…

C 语言分支与循环

目录 一. 分支结构&#xff1a;if 语句与 switch 语句 1. if 语句 2. switch 语句 二、关系操作符、条件操作符与逻辑操作符 1. 关系操作符 2. 条件操作符 3. 逻辑操作符 三、循环结构&#xff1a;while 循环、for 循环与 do - while 循环 1. while 循环 2. for 循…

【一文看懂Spring Boot2.x升级Spring Boot3.x】springboot2.x升级springboot3.x

springboot2.x升级springboot3.x 背景升级jdk版本为17以上springboot版本修改javax包更新mybatis-plus升级swagger升级springdocspringdoc配置背景 当前项目是springboot2.5.9版本的springboot+mybatis-plus项目,需要升级到springboot3.5.0项目。 升级jdk版本为17以上 Spri…