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

VUE3+TS+element-plus项目从0开始入门 - 创建项目、认识基本结构

文章目录

  • 写在前面
  • 1、创建vue3项目
    • npm create vue@latest
    • npm i
  • 2、项目结构
    • .vscode
    • vue3结构
      • a、项目树结构
      • b、package.json
      • c、tsconfig.json
      • d、index.html
      • d、src
      • e、main.ts
      • f、App.vue

写在前面

开前请自行下载vs code、node.js, 在vs code里面安装Vue - Official插件。本文使用的是vue3、ts、element,windows系统。

本文是 VUE3+TS+element-plus项目从0开始入门 系列的第一章
下一章 : VUE3+TS+element-plus项目从0开始入门 - 02

1、创建vue3项目

打开vscode,选择一个你希望项目保存的位置
在这里插入图片描述
再打开vs code的终端
在这里插入图片描述

npm create vue@latest

输入npm指令 npm create vue@latest , 后面依次按要求输入就行
这里Vue Router、和ESLint我们都选了了否,是为了更方法的入门vue3项目,在实际的工程中一般选是。
在这里插入图片描述

npm i

输入npm i 安装项目依赖

注意这里要先切换到项目的根目录下
npm i 是npm install的简写

在这里插入图片描述
npm i 执行完成之后会多一个项目依赖目录
在这里插入图片描述

2、项目结构

.vscode

.vscode 里面主要放vscode的工程配置文件。

.vscode里面的内容修改之后,关闭vscode再重新打开一下才会显示效果
在这里插入图片描述

vue3结构

a、项目树结构

这里面主要关注src, 后续前端写的大多数内容都在里面

├─node_modules                  # 存放项目依赖
├─public
│      favicon.ico              # 网站图标,浏览器标签栏显示的小图标
└─src│  App.vue                  # 根组件,Vue顶级组件,其他组件通常嵌套在其中│  main.ts                  # 应用入口文件,初始化Vue实例并挂载到DOM上│  ├─assets│      base.css             # 基础样式文件,定义全局通用样式│      logo.svg             # 项目Logo的SVG文件,通常用于品牌展示│      main.css             # 主样式文件,可能包含项目的主要CSS规则│      └─components│  HelloWorld.vue       # 示例组件,通常用于演示或测试目的
│  .gitignore                   # Git忽略规则文件
│  env.d.ts                     # TS类型声明文件,若没有,import时会报错
│  index.html                   # 项目HTML入口,Vue会被挂载到此文件中
│  package-lock.json            # 记录npm安装的依赖版本信息,确保不同环境中依赖一致性
│  package.json                 # 项目配置文件,包含项目基本信息、依赖和脚本命令
│  README.md                    # 项目的说明文档,通常包含项目介绍、使用方法等内容
│  tsconfig.app.json            # TypeScript配置文件,专门针对应用程序代码的TS编译选项
│  tsconfig.json                # 主要的TypeScript配置文件,定义了整个项目的TS编译规则
│  tsconfig.node.json           # TypeScript配置文件,专门针对Node.js环境的代码编译选项
│  vite.config.ts               # Vite构建工具的配置文件,用于自定义构建行为

b、package.json

项目中有package-lock.json和package.json

  • package-lock.json通常不需要手动编辑
    每次运行 npm install 或其他相关命令时,npm 会根据 package.json 中定义的依赖范围(如 ^1.0.0 或 ~1.0.0),解析并安装具体的依赖版本,并更新 package-lock.json 文件。

  • package.json 可以手动编辑
    里面包含了项目名称、版本、证书、依赖等

package.json示例

{"name": "vue3-ts-element-plus-app", // 项目名称"version": "1.0.0",                // 版本号"description": "A Vue 3 + TypeScript + Element Plus project", // 项目描述"private": true,                   // 是否为私有项目"scripts": {                       // 脚本命令"serve": "vite",                 // 启动开发服务器"build": "vite build",           // 构建生产代码"preview": "vite preview",       // 预览构建结果"lint": "eslint src --ext .ts,.tsx,.js,.vue" // 代码检查},"dependencies": {                  // 运行时依赖"vue": "^3.4.0",                 // Vue 3 核心库"vue-router": "^4.2.4",          // Vue 3 路由管理"pinia": "^2.1.7",               // Vue 3 状态管理"axios": "^1.5.0",               // HTTP 请求库"element-plus": "^2.4.0"         // Element Plus UI 库},"devDependencies": {               // 开发时依赖"@vitejs/plugin-vue": "^4.3.0",  // Vite 插件支持 Vue 单文件组件"typescript": "^5.2.2",          // TypeScript 支持"vite": "^4.4.9",                // Vite 开发服务器"eslint": "^8.53.0",             // ESLint 检查工具"sass": "^1.65.1",               // CSS 预处理器(Element Plus 使用 Sass)"@types/node": "^20.8.0",        // Node.js 类型定义"@rushstack/eslint-patch": "^1.3.3" // 解决 ESLint 和 TypeScript 兼容问题},"browserslist": [                  // 目标浏览器范围"> 1%",                          // 全球使用量 >1% 的浏览器"last 2 versions",               // 最近两个版本"not dead"                       // 排除已停止更新的浏览器],"type": "module"                   // 使用 ES 模块
}

c、tsconfig.json

  • tsconfig.json : ts配置文件,整个项目的TS编译规则
{"compilerOptions": {"target": "ESNext",              // 目标 ECMAScript 版本"module": "ESNext",              // 模块系统"strict": true,                  // 启用所有严格类型检查选项"esModuleInterop": true,         // 允许与 CommonJS 模块互操作"skipLibCheck": true,            // 跳过对第三方库的类型检查"forceConsistentCasingInFileNames": true, // 强制文件名大小写一致"moduleResolution": "Node",      // 使用 Node.js 模块解析策略"resolveJsonModule": true        // 支持导入 JSON 文件},"include": ["src"],                // 包含的文件目录"exclude": ["node_modules"]        // 排除的文件目录
}
  • tsconfig.app.json : ts配置文件, 程序代码的TS编译选项, tsconfig.json的扩展
{"extends": "./tsconfig.json",      // 继承主配置文件"compilerOptions": {"outDir": "./dist/client",       // 输出目录"rootDir": "./src",              // 根目录"composite": true                // 启用项目引用(Project References)},"include": ["src/**/*.ts", "src/**/*.vue"] // 包含的文件
}
  • tsconfig.node.json : ts配置文件,针对Node.js环境的代码编译选项, tsconfig.json 的扩展
{"extends": "./tsconfig.json",      // 继承主配置文件"compilerOptions": {"outDir": "./dist/server",       // 输出目录"composite": true,               // 启用项目引用"module": "CommonJS"             // 使用 CommonJS 模块系统(适合 Node.js)},"include": ["vite.config.ts", "server/**/*.ts"] // 包含的文件
}

tsconfig.app.json 和 tsconfig.node.json 都通过 extends 继承自 tsconfig.json,从而复用全局配置。

tsconfig.json:全局配置,适用于整个项目。
tsconfig.app.json:客户端代码专用配置。
tsconfig.node.json:服务端或构建工具代码专用配置。

如果启用了 composite: true,可以通过 TypeScript 的项目引用功能实现更高效的增量编译。
例如,tsconfig.app.json 和 tsconfig.node.json 可以分别作为独立的子项目,共享 tsconfig.json 的基础配置。

d、index.html

index.html 项目入口,里面引用了index.ts。
index.ts 里面引入App.vue。
在这里插入图片描述

d、src

以后的主战场都在这里,
后续完整的src目录结构可能是这样的

src/
├── assets/              # 静态资源(图片、字体等)
├── components/          # 可复用的全局组件
├── views/               # 页面级组件(路由对应的页面)
├── router/              # 路由配置
├── store/               # 状态管理(如 Pinia 或 Vuex)
├── utils/               # 工具函数和公共方法
├── services/            # API 请求相关代码(如 Axios 封装)
├── styles/              # 全局样式文件
├── types/               # TypeScript 类型定义
├── App.vue              # 根组件
└── main.ts              # 应用入口文件

e、main.ts

在这里插入图片描述

f、App.vue

“.vue”文件里面就是后续我们开发的主要内容
主要包含了三大块
在这里插入图片描述

相关文章:

VUE3+TS+element-plus项目从0开始入门 - 创建项目、认识基本结构

文章目录 写在前面1、创建vue3项目npm create vuelatestnpm i 2、项目结构.vscodevue3结构a、项目树结构b、package.jsonc、tsconfig.jsond、index.htmld、srce、main.tsf、App.vue 写在前面 开前请自行下载vs code、node.js, 在vs code里面安装Vue - Official插件。本文使用的…...

shared_ptr 不析构的问题记录

片段1: 片段2: 你们猜 哪个有问题 ?...

DeepSeek模型量化

技术背景 大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果。常见的就是把Float16的浮…...

原生稀疏注意力机制(NSA):硬件对齐且可原生训练的稀疏注意力机制-论文阅读

摘要 长上下文建模对于下一代语言模型至关重要,但标准注意力机制的高计算成本带来了巨大的计算挑战。稀疏注意力提供了一种在保持模型能力的同时提高效率的有前途的方向。本文提出了一种名为 NSA(原生可训练稀疏注意力机制) 的方法&#xff…...

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件: https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables,将目…...

Zookeeper(58)如何在Zookeeper中实现分布式锁?

在 Zookeeper 中实现分布式锁是一种常见的用例。Zookeeper 提供了强一致性、高可用性的分布式协调服务,使得它非常适合用来实现分布式锁。以下是详细的步骤和代码示例,展示如何在 Zookeeper 中实现分布式锁。 1. Zookeeper 分布式锁的基本原理 Zookeep…...

23种设计模式 - 观察者模式

模式定义 观察者模式(Observer Pattern)是一种行为型设计模式,定义了一对多的依赖关系:当一个对象(称为主题)状态变化时,所有依赖它的对象(称为观察者)会自动收到通知并…...

conda、anaconda、pip、pytorch、tensorflow有什么区别?

先画一张图,可以大致看出它们的区别和关联: pytorch、tensorflow都是Python的第三方库,相当于封装的代码工具集库,通过import导入使用。这两个都是深度学习框架,用来搭建AI模型什么的,使用范围非常之广&…...

项目设置内网 IP 访问实现方案

在我们平常的开发工作中,项目开发、测试完成后进行部署上线。比如电商网站、新闻网站、社交网站等,通常对访问不会进行限制。但是像企业内部网站、内部管理系统等,这种系统一般都需要限制访问,比如内网才能访问等。那么一个网站应…...

Vue面试2

1.跨域问题以及如何解决跨域 跨域问题(Cross-Origin Resource Sharing, CORS)是指在浏览器中,当一个资源试图从一个不同的源请求另一个资源时所遇到的限制。这种限制是浏览器为了保护用户安全而实施的一种同源策略(Same-origin p…...

合合信息2025届春季校园招聘全面启动!

世界因你而AI,合合信息2025届春季校园招聘启动! 我们是谁? 我们是一家行业领先的人工智能及大数据科技企业 18年深耕AI领域,C端产品与B端服务布局矩阵完善 9.4亿全球累计用户首次下载量💥 来到这里你能得到什么&a…...

如何利用 Vue 的生命周期钩子进行初始化和清理操作?

一、初始化操作的核心钩子 1. created(选项式API) export default {data() {return { user: null };},created() {// 适合初始化数据、发起非DOM操作请求this.fetchUser();},methods: {async fetchUser() {const response await fetch(/api/user);thi…...

Excell 代码处理

文章目录 Excell 代码处理cvc格式xlsl格式小结 Excell 代码处理 有时候要对excell进行分析,或者数据的导入导出,这个时候如果可以用代码读写分析操作那么会方便很多 cvc格式 CSV(Comma-Separated Values,逗号分隔值)是…...

KMP的next数组构建详解

KMP的next数组构建详解 1. next数组的作用 核心功能:在KMP算法中,当模式串与主串发生不匹配时,next数组决定模式串指针回退的位置,避免无效匹配。 定义:next[i]表示子串s[0...i]的最长公共前后缀长度。例如&#xff…...

Docker 的安全配置与优化(二)

Docker 安全优化策略 (一)多阶段构建优化镜像大小 多阶段构建是 Docker 17.05 版本引入的强大功能,它允许在一个 Dockerfile 中定义多个构建阶段,每个阶段都可以使用不同的基础镜像和依赖项,最终只将必要的文件和依赖…...

shiro代码层面追踪

文章目录 环境漏洞分析硬编码 反序列化Gadget构造 环境 环境搭建:https://blog.csdn.net/qq_44769520/article/details/123476443 漏洞分析 硬编码 shiro是对rememberMe这个cookie进⾏反序列化的时候出现了问题。 相应代码 // // Source code recreated from …...

通信系统中物理层与网络层联系与区别

在通信系统中,物理层和网络层是OSI(开放系统互连)模型中的两个重要层次,分别位于协议栈的最底层和第三层。它们在功能、职责和实现方式上有显著的区别,但同时也在某些方面存在联系。以下是物理层与网络层的联系与区别的…...

虚拟机网络ssh连接失败,没有网络

vscode进行ssh时连接失败,发现是虚拟机没有网络。 虚拟机ping不通www.baidu.com但可以ping通内网 ping 8.8.8.8ping不通。 sudo dhclient -r ens33 sudo dhclient ens33 ip route show可以了。 20250221记录:不知道是不是重启了虚拟机还是咋了&#…...

已知点矩阵的三个顶点坐标、行列数和行列的间距,计算得出剩余所有点的坐标

已知点矩阵的三个顶点坐标、行列数和行列的间距,计算得出剩余所有点的坐标 计算矩阵中每个点的坐标代码实现案例图调用验证 计算矩阵中每个点的坐标 给定左上角、左下角和右上角三个点的坐标,以及矩阵的行数、列数、行间距和列间距,我们可以…...

Python Cookbook-2.4 从文件中读取指定的行

任务 根据给出的行号,从文本文件中读取一行数据。 解决方案 Python标准库linecache模块非常适合这个任务: import linecache theline linecache.getline(thefilepath, desired_line_number)讨论 对这个任务而言,标准的 linecache 模块是 Python 能…...

go 并发 gorouting chan channel select Mutex sync.One

goroutine // head&#xff1a; 前缀 index&#xff1a;是一个int的指针 func print(head string, index *int) {for i : 0; i < 5; i {// 指针对应的int *indexfmt.Println(*index, head, i)// 暂停1stime.Sleep(1 * time.Second)} }/* Go 允许使用 go 语句开启一个新的运…...

Unity游戏制作中的C#基础(3)加减乘除算术操作符,比较运算符,逻辑与,或运算符

1. 基本算术运算符 算术运算符主要用于对数值类型&#xff08;整型和浮点型&#xff09;进行基本的数学运算。以下是常见的算术运算符及其说明&#xff1a; 运算符描述示例结果加法运算符&#xff0c;用于两个数相加&#xff0c;也可用于字符串连接int a 5 3; string str &…...

深度学习入门--python入门2

以前学的全忘了&#xff0c;现在算是才开始学&#xff0c;有错误&#xff0c;恳请指正。 目录 1.4 Python脚本文件 1.4.1保存为文件 1.4.2 类 1.5 Numpy 1.5.1 导入Numpy 1.5.2 生成Numpy数组 1.5.3 Numpy的算术运算 1.5.4 Numpy的N维数组 1.5.5 广播 1.5.6 访问元素…...

题海拾贝:【枚举】P2010 [NOIP 2016 普及组] 回文日期

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…...

Mac端homebrew安装配置

拷打了一下午o3-mini-high&#xff0c;不如这位博主的超强帖子&#xff0c;10分钟结束战斗 跟随该文章即可&#xff0c;2025/2/19亲测可行 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客文章浏览阅读10w次&#xff0c;点赞258次&#xff0c;收藏837次。一直觉得自己写…...

Web - JS基础语法与表达式

概述 这篇文章主要介绍了 JavaScript 的基础语法&#xff0c;包括代码书写位置、ERPL 环境、变量&#xff08;命名规则、默认值、初始化&#xff09;、数据类型&#xff08;基本和复杂&#xff0c;及各类型特点、转换&#xff09;、表达式和运算符&#xff08;算数、特殊算数、…...

Python高级语法之selenium

目录&#xff1a; 1、selenium的使用2、selenium元素定位3、selenium使用功能Phantomjs模拟浏览器启动4、selenium使用功能ChromsHandless模拟浏览器启动 1、selenium的使用 2、selenium元素定位 3、selenium使用功能Phantomjs模拟浏览器启动 4、selenium使用功能ChromsHandles…...

AIP-148 标准域

编号148原文链接AIP-148: Standard fields状态批准创建日期2020-10-06更新日期2020-10-06 一些概念在任何API集合中都很常用。对于这些概念&#xff0c;使用统一的标准域名字和行为来表达它们&#xff0c;是非常有用的。 指南 标准域 应当 用于描述其相应概念&#xff0c; 不…...

Docker构建时,设定默认进入的工作目录的方法

在 Docker 中,你可以通过不同的方式来设定容器默认进入的目录,以下针对不同场景分别介绍具体方法: 1. 使用 Dockerfile 设定工作目录 如果你是通过构建镜像的方式来运行容器,那么可以在 Dockerfile 中使用 WORKDIR 指令来设置容器启动时的默认工作目录。以下是具体步骤:…...

2025年3月最新算法-鲸鱼迁徙优化算法Whale Migration Algorithm-附Matlab免费代码

引言 本期介绍了一种基于座头鲸协同迁移行为的创新生物启发式优化方法——鲸鱼迁徙优化算法Whale Migration Algorithm&#xff0c;WMA。该算法于2025年3月最新发表在期刊 Results in Engineering 在本节中&#xff0c;我们概述了开发鲸鱼迁移算法&#xff08;WMA&#xff09;…...