一、Vue3 零基础入门:从核心原理到 Vite 项目搭建
文章目录
-
- 一、Vue.js 概述与核心哲学
- 二、三大核心底层机制
- 三、使用vite创建项目
-
- 第一步:执行创建命令
- 第二步:配置选项详解
-
- 1. Project name (项目名称)
- 2. Add TypeScript? (添加 TypeScript 支持吗?)
- 3. 功能选择
-
- Add JSX Support? (添加 JSX 支持吗?)
- Add Vue Router for Single Page Application development? (添加路由支持吗?)
- Add Pinia for state management? (添加 Pinia 进行状态管理吗?)
- Add Vitest for Unit Testing? (添加 Vitest 进行单元测试吗?)
- Add an End-to-End (E2E) Testing Solution? (添加端到端测试方案吗?)
- Add ESLint for code quality? (添加 ESLint 进行代码质量检查吗?)
- Add Prettier for code formatting? (添加 Prettier 进行代码格式化吗?)
- 第三步:启动项目
- 四、vue项目结构:代码到底写在哪?
一、Vue.js 概述与核心哲学
Vue.js(通常简称为 Vue,读音类似 /vjuː/,同 view)是一个用于构建用户界面的渐进式 JavaScript 框架。它由华裔工程师尤雨溪(Evan You)于 2014 年创建,如今已成为全球最流行的前端框架之一,与 React 和 Angular 并称为“前端三驾马车”。
vue官网:https://cn.vuejs.org/
1. 四大核心设计理念
Vue 之所以备受开发者青睐,主要源于以下几个核心设计思想:
-
渐进式框架 (Progressive)
“渐进式”意味着 Vue 的核心库只关注视图层。
-
小微项目:你只需要把 Vue 当作一个轻量级的库来引入(类似 jQuery 挂载 CDN);
-
复杂项目:你可以逐步引入 Vue Router(路由)、Pinia(状态管理)以及 Vite(构建工具),演进为全功能的大型单页应用(SPA)。它绝不会强迫你一次性引入所有复杂的概念。
-
-
声明式渲染 (Declarative)
Vue 采用了声明式编程范式。你只需要在 HTML 模板中声明数据与视图的映射关系,当 JavaScript 中的数据发生变化时,Vue 会自动更新 DOM(网页内容),开发者无需手动编写繁琐的、易错的 DOM 操作代码。
-
组件化开发 (Component-Based)
Vue 允许开发者将网页拆分为一个个独立、可复用的“组件”。每个组件都包含自己的 HTML 模板、CSS 样式和 JavaScript 逻辑。
-
单文件组件 (SFC, Single File Component)
Vue 独创了
.vue文件格式,允许把<template>、<script>和<style>写在同一个文件中。这种高内聚的模式极大地提高了开发效率和代码的可维护性。
2. Vue 3 核心技术栈生态
一个现代化的 Vue 企业级项目,通常会包含以下官方推荐的生态工具:
| 工具名称 | 功能定位 | 核心简介 |
|---|---|---|
| Vue Core | 核心框架 | 负责基础的响应式数据绑定、虚拟 DOM 渲染和组件系统。 |
| Vue Router | 官方路由管理器 | 负责处理单页应用(SPA)中的页面跳转、路由守卫与 URL 映射。 |
| Pinia | 状态管理库 | 负责在多个组件之间共享和管理全局数据(Vue 3 官方推荐,取代 Vuex)。 |
| Vite | 构建工具 | 下一代的前端开发与打包工具,基于浏览器原生 ESM,速度极快。 |
3. Vue 2 与 Vue 3 的划时代区别
目前前端主流使用的是 Vue 3(Vue 2 已于 2023 年底停止官方维护)。相比 Vue 2,Vue 3 带来了底层的巨大飞跃:
-
组合式 API (Composition API):彻底解决了 Vue 2 选项式 API(Options API)在大项目中代码逻辑分散、反复横跳的问题,让代码复用(Custom Hooks)和业务组织更加灵活。
-
更好的 TypeScript 支持:Vue 3 源码本身就是用 TypeScript 重写的,类型推导极其完美。
-
更快的速度、更小的体积:采用了更高效的 Proxy 响应式系统,并配合编译器做了大量静态标记(Patch Flags)优化。
二、三大核心底层机制
要真正掌握 Vue 3,必须理解它在内存和底层是如何驱动视图的。其核心机制主要由 MVVM 模式、Proxy 响应式系统 和 虚拟 DOM ”三驾马车”协同完成。
1. MVVM 架构模式
在传统的 JavaScript(比如 jQuery)中,我们要修改网页内容,需要先在网页中通过选择器找到特定的 DOM 节点,然后把数据硬塞进去。这种模式叫 命令式驱动 DOM,代码写起来非常繁琐且难以维护。
Vue 采用了 MVVM(Model-View-ViewModel) 架构,将数据与视图彻底解耦:
-
M (Model - 模型):纯粹的 JavaScript 数据对象,例如从后端 Python/Node.js API 异步获取到的工单、用户信息的 JSON 数据。
-
V (View - 视图):由 HTML/CSS 构成的页面,负责向用户展示界面。
-
VM (ViewModel - 视图模型):这是 Vue 的内核所在。它像一个双向胶水,把 Model 和 View 牢牢粘在一起,包含两个核心方向:
-
数据绑定(Data Binding):只要 Model(数据)一变,VM 会自动把新数据同步到 View(网页)上。
-
事件监听(DOM Listeners):用户在 View(网页)上点击了按钮或者输入了文字,VM 会自动捕捉到这个动作,并触发 JS 逻辑去修改 Model(数据)。
-
2. 基于 Proxy 的响应式数据绑定
“响应式”的意思是:只要数据发生改变,视图(网页)会自动做出响应并重新渲染。
在 Vue 3 中,这种响应式是通过 JavaScript 原生的 Proxy(代理)实现的。Vue 会用这个“监控器”把你的普通数据包裹起来。当你修改数据时,Proxy 会拦截这个行为,立刻通知 Vue 进行依赖更新。
对比传统 JS 与 Vue 3 响应式:
传统 JS:
let price = 20; // 网页毫无反应,除非你手动执行: document.getElementById('price-tag').innerText = price;Vue 3 响应式:
const price = ref(20); price.value = 30; // 网页上所有用到 price 的地方会自动瞬间变成 30
3. 虚拟 DOM(Virtual DOM)与 Diff 算法
假设网页上渲染了一个包含 1000 个工单 的复杂列表,其中仅仅第 5 个工单的状态从“待处理”变成了“处理中”。
-
传统做法:浏览器把整个包含 1000 个列表的网页真实 DOM 节点全部拆掉,重新销毁并构建一遍。这种对“真实 DOM” 的直接操作极其消耗操作系统的性能,会导致网页明显的卡顿与掉帧。
-
Vue 的虚拟 DOM 做法:
-
内存复制:Vue 在内存里用轻量级的 JS 对象(VNode)复制了一个“假网页”(这就是虚拟 DOM)。
-
脏检查与对比:当数据变动时,Vue 先在内存里生成一个新的虚拟 DOM。然后利用 Diff 算法 把“新虚拟 DOM”和“老虚拟 DOM”进行快速、高效的同层对比。
-
精准打击:对比完后,算法精准定位出:“哦,只有第 5 个工单的状态文字变了,其他 999 个工单完全没变。”
-
最小化更新:最后,Vue 只去真实网页里修改那唯一一个发生变动的标签(Patch 阶段)。
-
通过这套机制,Vue 保证了无论业务数据如何高频变动,前端页面都能维持极高的渲染性能与丝滑的交互体验。
三、使用vite创建项目
使用 Vite 创建 Vue 3 项目非常高效。Vite 的速度极快,是目前vue前端开发的主流构建工具。
下面我将一步步带你创建项目,并详细解释过程中每一个选项的含义。
第一步:执行创建命令
在终端(Terminal)中,进入你想要存放项目的文件夹,然后运行以下命令:
npm create vue@latest
![![[Pasted image 20260604181328.png]]](https://i-blog.csdnimg.cn/direct/d549512bf7e5406cbbcb4ad048c88d94.png)
注意:这个命令会下载并运行官方的
create-vue工具,它是基于 Vite 来定制 Vue 项目的官方脚手架。
第二步:配置选项详解
运行命令后,系统会提示你输入项目名称,随后会有一系列的配置问答。以下是每个选项的详细含义和选择建议:
1. Project name (项目名称)
-
含义:你的项目文件夹名称。
-
默认值:
vue-project -
建议:直接输入你想取的项目名(如
my-vue3-app),或者直接回车使用默认值。
![![[Pasted image 20260604181447.png]]](https://i-blog.csdnimg.cn/direct/ccf227a8341a40a9bca915c15d4f958c.png)
2. Add TypeScript? (添加 TypeScript 支持吗?)
-
含义:是否在项目中使用 TypeScript (TS)。TS 是 JavaScript 的超强版,加入了静态类型检查。
-
选项:
No/Yes -
建议:如果你只是练手或刚开始学 Vue 3,选
No;如果是公司正规项目或想提升代码健壮性,强烈建议选Yes(Vue 3 本身就是用 TS 写的,对 TS 支持极好)。![![[Pasted image 20260604181559.png]]](https://i-blog.csdnimg.cn/direct/ce126af7adc4442a92f7471efdc08534.png)
3. 功能选择
![![[Pasted image 20260604181755.png]]](https://i-blog.csdnimg.cn/direct/fd0a305d964f483fa099308c2f078ba5.png)
Add JSX Support? (添加 JSX 支持吗?)
-
含义:是否允许在 Vue 中写 JSX/TSX 代码(类似 React 的写法),而不是传统的
<template>模版。 -
选项:
No/Yes -
建议:选
No。除非你有很强的 React 背景或者特殊需求,否则 Vue 官方更推荐使用结构更清晰的<template>语法。
Add Vue Router for Single Page Application development? (添加路由支持吗?)
-
含义:是否安装 Vue Router。它是用来实现单页面应用(SPA)页面跳转的(比如从“首页”跳到“关于我们”而不需要刷新浏览器)。
-
选项:
No/Yes -
建议:选
Yes。绝大多数项目都需要做页面跳转。
Add Pinia for state management? (添加 Pinia 进行状态管理吗?)
-
含义:是否安装 Pinia。它是 Vue 3 官方推荐的全局状态管理库(用来替代老旧的 Vuex)。当你的项目很大,多个组件需要共享和修改同一份数据(比如登录的用户信息、购物车商品)时会用到。
-
选项:
No/Yes -
建议:中大型项目选
Yes;如果只是写个简单的单页小 Demo,可以选No。
Add Vitest for Unit Testing? (添加 Vitest 进行单元测试吗?)
-
含义:是否引入 Vitest 测试框架。用来编写单元测试,确保你的单个函数或组件运行逻辑正确。
-
选项:
No/Yes -
建议:普通开发或初学者选
No;注重测试驱动开发(TDD)的规范项目选Yes。
Add an End-to-End (E2E) Testing Solution? (添加端到端测试方案吗?)
-
含义:是否引入端到端测试。模拟真实用户在浏览器上的点击和输入操作,可选 Cypress、Playwright 或 Nightwatch。
-
选项:
No/Cypress/Playwright/Nightwatch -
建议:选
No。初期不需要,后续有需求可以随时手动加。
Add ESLint for code quality? (添加 ESLint 进行代码质量检查吗?)
-
含义:是否引入 ESLint。它是一个代码检查工具,用来规范代码格式(比如不能有错别字、没用的变量、漏掉的分号等),不符合规范编译会报错。
-
选项:
No/Yes -
建议:强烈建议选
Yes。虽然刚开始可能觉得它天天报错很烦,但它能帮你养成良好的代码习惯,避免很多低级 Bug。
Add Prettier for code formatting? (添加 Prettier 进行代码格式化吗?)
-
含义:是否引入 Prettier。配合 ESLint 使用,一键保存就能自动把你的代码排版得整整齐齐(比如自动缩进、给双引号改单引号等)。
-
选项:
No/Yes -
建议:选
Yes。配合Prettier 插件,写代码体验极佳。![![[Pasted image 20260604182329.png]]](https://i-blog.csdnimg.cn/direct/cd04b12e86874f6e96899b019c8017e7.png)
第三步:启动项目
配置完成后,终端会提示你后续的命令。你只需要依次输入以下三行命令即可:
# 1. 进入你刚刚创建的项目文件夹(把 my-vue3-app 换成你实际的项目名)
cd my-vue3-app
# 2. 安装项目依赖(下载 node_modules)
npm install
# 3. 启动本地开发服务器
npm run dev
![![[Pasted image 20260604182620.png]]](https://i-blog.csdnimg.cn/direct/7cca9b9f950545adb5c2c0716f52f6ac.png)
看到终端输出 Local: http://localhost:5173/ 类似字样时,按住 Ctrl (或 Cmd) 并点击该链接,就能在浏览器中看到你的 Vue 3 项目首页了!
![![[Pasted image 20260604182647.png]]](https://i-blog.csdnimg.cn/direct/4060076bff51411d88e690294aba96dc.png)
四、vue项目结构:代码到底写在哪?
当你用 Vite 创建好项目并用编辑器打开时,你会看到左侧有一堆文件。真正需要你关心的,只有 src(源代码) 文件夹。
我们来看看最核心的几个文件是干嘛的:
my-vue3-app/
├── node_modules/ # 依赖包(放一堆工具的地方,不用管)
├── public/ # 静态资源(放不需要编译的图标、图片,初学不用管)
├── src/ # ⭐⭐⭐ 你的核心工作区!你的代码全写在这里
│ ├── assets/ # 存放图片、样式表(CSS/Sass)
│ ├── components/ # 存放“小零件”(重复使用的公共组件)
│ ├── App.vue # ⭐ 根组件(房子的“大厅”,所有页面的大总管)
│ └── main.ts / js # 入口文件(负责把 Vue 挂载到浏览器上的“大门”,不用改它)
├── index.html # 单页面应用的HTML外壳(不用改它)
├── package.json # 项目配置文件(记录项目名字和用了什么插件)
└── vite.config.ts / js # Vite 的配置文件(之前提过加插件的地方)
核心结论:
你刚开始写练习代码时,99% 的时间都在src文件夹里折腾。而最直接的演练场,就是src/App.vue。
更多推荐

所有评论(0)