Vue 3 作为目前最流行的前端框架之一,相比 Vue 2 带来了更强大的性能、更灵活的组合式 API 以及更好的 TypeScript 支持。下面我将从 0 开始,完成 Vue 3 开发环境搭建,编写第一个 HelloWorld 程序,初步认识 Vue 3 的核心概念,为后续学习打下基础。
一、开发环境准备
在开始 Vue 3 开发前,需要确保你的电脑已安装以下工具:
1. 必备工具
-
Node.js:Vue 项目依赖 Node.js 环境(推荐安装 v16+ 版本),包含 npm(包管理工具)
- 下载地址:nodejs.org/
- 验证安装:
node -v和npm -v命令能显示版本号即安装成功
-
代码编辑器:推荐使用 VS Code,配合 Vue 相关插件提升开发效率
-
推荐插件:
- Volar(Vue 3 官方推荐的代码高亮、语法提示插件)
- Vue 3 Snippets(提供常用 Vue 语法片段)
- ESLint(代码规范检查)
二、创建第一个 Vue 3 项目
Vue 官方推荐使用 Vite 作为构建工具(替代 Vue 2 常用的 Webpack),因为 Vite 提供了更快的开发启动速度和热更新体验。
1. 基于 Vite 创建项目
打开终端(命令提示符 / 终端 / PowerShell),执行以下命令:
# 创建项目(选择 Vue 模板)
npm create vite@latest my-first-vue3-app -- --template vue
# 进入项目目录
cd my-first-vue3-app
# 安装依赖
npm install
# 启动开发服务器
npm run dev
执行过程中会出现交互式选项,按如下选择即可:
- Project name:直接回车(使用默认名称)或自定义
- Select a framework:选择
Vue - Select a variant:选择
JavaScript(新手推荐)或TypeScript
2. 项目目录结构解析
成功创建后,项目基本结构如下(重点关注以下文件 / 目录):
my-first-vue3-app/
├─ node_modules/ # 项目依赖包(无需手动修改)
├─ public/ # 静态资源目录(如图片、favicon.ico)
├─ src/ # 源代码目录(核心开发区域)
│ ├─ assets/ # 资源文件(图片、样式等)
│ ├─ components/ # 自定义组件目录
│ ├─ App.vue # 根组件(整个应用的入口组件)
│ ├─ main.js # 入口文件(程序启动入口)
│ └─ style.css # 全局样式
├─ index.html # 入口 HTML 文件
├─ package.json # 项目配置(依赖、脚本命令等)
└─ vite.config.js # Vite 配置文件
三、编写第一个 HelloWorld 程序
让我们修改默认项目,编写一个简单的 HelloWorld 程序,理解 Vue 3 的基本开发模式。
1. 修改根组件(App.vue)
Vue 组件文件(.vue)包含三个部分:
<template>:组件的 HTML 结构(视图)<script>:组件的逻辑(数据、方法等)<style>:组件的样式
打开 src/App.vue,替换为以下内容:
<template>
<!-- 视图部分:展示数据和用户界面 -->
<div class="app-container">
<h1>{{ message }}</h1>
<button @click="changeMessage">点击修改消息</button>
</div>
</template>
<script setup>
// 逻辑部分:定义数据和方法(Vue 3 组合式 API)
import { ref } from 'vue';
// 定义响应式数据(ref 用于基本类型数据)
const message = ref('Hello, Vue 3!');
// 定义方法:点击按钮时修改消息
const changeMessage = () => {
message.value = 'Hello, World! 👋';
};
</script>
<style>
/* 样式部分:美化界面 */
.app-container {
text-align: center;
margin-top: 50px;
}
button {
padding: 8px 16px;
font-size: 16px;
margin-top: 20px;
cursor: pointer;
background-color: #42b983;
color: white;
border: none;
border-radius: 4px;
transition: background-color 0.3s;
}
button:hover {
background-color: #359e75;
}
</style>
2. 运行效果
确保开发服务器处于运行状态(npm run dev),打开浏览器访问 http://127.0.0.1:5173/,你会看到:
-
页面显示 "Hello, Vue 3!" 文字
-
点击按钮后,文字变为 "Hello, World! 👋"
这个简单的程序展示了 Vue 的核心特性:数据驱动视图—— 当数据(message)发生变化时,视图会自动更新,无需手动操作 DOM。
四、Vue 3 核心概念初识
通过上面的 HelloWorld 程序,我们已经接触到了 Vue 3 的一些核心概念,下面逐一解释:
1. 组件(Component)
Vue 应用是由组件构成的,每个 .vue 文件就是一个组件。组件可以理解为 “可复用的 UI 模块”,包含自己的视图、逻辑和样式。
App.vue是根组件,整个应用的入口- 后续开发中,我们会创建更多组件(如
Header.vue、Card.vue),并组合使用
2. 响应式数据(Reactive Data)
在 Vue 中,数据是 “响应式” 的 —— 当数据变化时,依赖该数据的视图会自动更新。
ref是 Vue 3 中创建响应式数据的方法之一,用于基本类型(字符串、数字、布尔值)- 访问或修改
ref创建的数据时,需要通过.value属性(模板中使用时可省略)
// 创建响应式数据
const count = ref(0);
// 修改数据(会触发视图更新)
count.value = 1;
3. 模板语法(Template Syntax)
Vue 使用基于 HTML 的模板语法,允许在 HTML 中嵌入 Vue 特有的语法:
- 插值表达式:
{{ message }}用于将数据渲染到视图中 - 指令:以
v-开头的特殊属性,用于实现逻辑控制(如v-if条件渲染、v-for循环渲染) - 事件绑定:
@click是v-on:click的简写,用于绑定事件处理函数
4. 组合式 API(Composition API)
Vue 3 引入了组合式 API,主要通过 <script setup> 语法实现,相比 Vue 2 的 Options API 更灵活:
- 可以按逻辑关注点组织代码(而不是按
data、methods等选项分类) - 更方便地复用代码逻辑
- 更好的 TypeScript 支持
上面的代码中,import { ref } from 'vue' 和 const message = ref(...) 就是组合式 API 的使用方式。
5. 生命周期(Lifecycle)
Vue 组件从创建到销毁会经历一系列阶段,称为生命周期。我们可以通过生命周期钩子函数在特定阶段执行代码。
常用的生命周期钩子(Vue 3 中需从 vue 导入):
onMounted:组件挂载到 DOM 后执行(如初始化数据请求)onUpdated:组件更新后执行onUnmounted:组件卸载后执行(如清理定时器)
示例:
<script setup>
import { onMounted } from 'vue';
// 组件挂载后执行
onMounted(() => {
console.log('组件已挂载到页面上');
// 可以在这里发起数据请求
});
</script>
五、扩展练习:计数器功能
为了巩固所学知识,我们来实现一个简单的计数器功能:
- 显示当前计数(初始值为 0)
- 提供 “+1” 和 “-1” 两个按钮
- 点击按钮时更新计数
<template>
<div class="counter">
<h2>计数器: {{ count }}</h2>
<div class="buttons">
<button @click="increment">+1</button>
<button @click="decrement">-1</button>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue';
// 定义计数器响应式数据
const count = ref(0);
// 增加计数
const increment = () => {
count.value++;
};
// 减少计数
const decrement = () => {
count.value--;
};
</script>
<style>
.counter {
text-align: center;
margin: 50px;
}
.buttons button {
margin: 0 10px;
padding: 8px 16px;
}
</style>
将 App.vue 的内容替换为上述代码,观察运行效果,尝试理解数据如何驱动视图更新。
六、总结
通过实践,我们实现了以下效果:
- Vue 3 开发环境的搭建(Node.js + VS Code + Vite)
- 创建并运行了第一个 Vue 3 项目
- 编写了 HelloWorld 和计数器程序,实践了数据绑定和事件处理
- 初步认识了 Vue 3 的核心概念:组件、响应式数据、模板语法、组合式 API 等