✅ 2026最新技术规范,纯零基础友好 ,从0到1讲解,无任何前置框架/语法要求,看完就能上手
✅ 内容通俗易懂、无专业黑话,所有知识点用大白话解释,代码案例极简可运行,每一步都有清晰说明
✅ 条理清晰、循序渐进,知识点由浅入深,从环境搭建→核心语法→组件开发→常用API→实战案例,完美贴合小白学习节奏
✅ 2026主流技术栈:
Vue3 + Vite + Pinia + VueRouter4,不学过时内容,学的就是企业开发标配,零基础也能对接真实开发需求✅ 核心定位:零基础小白看完能掌握 Vue3 开发核心能力,能独立开发中小型Vue3项目(管理后台、官网、移动端页面),是前端入门Vue3的最佳基础教程
一、Vue3 前置必懂(零基础扫盲 · 5分钟吃透 少走99%弯路)
✔️ 1. 什么是Vue3?(白话版 零基础秒懂)
Vue 是一套渐进式JavaScript前端框架 ,Vue3 是 Vue 的最新稳定版本(2026年主流版本是 Vue3.4+),也是目前前端开发最主流、最热门的框架之一。
✅ 核心大白话解释:
- 原生JS写页面:需要手动操作DOM、处理数据渲染、维护页面状态,代码混乱且重复工作多;
- Vue3写页面:不用手动操作DOM,只需要关注「数据」和「页面结构」,Vue3自动帮你完成数据和页面的联动,写代码效率翻倍,代码更简洁易维护。
- 一句话总结:Vue3 是让前端开发变简单的「神器」,零基础友好,上手快,开发效率高。
✔️ 2. 为什么2026年必学Vue3?(零基础必知 学习理由)
Vue3 能成为前端主流,不是没有原因的,这些理由对零基础小白尤其友好,每一条都很重要:
- ✅ 零基础友好,入门门槛极低:Vue3的语法贴近原生HTML/CSS/JS,会基础的前端三件套就能学,不用先学复杂的编程思想,上手速度远超React/Angular;
- ✅ 生态完善,文档友好:官方文档中文清晰、案例丰富,配套的插件/UI库/工具链应有尽有,遇到问题能快速找到解决方案;
- ✅ 企业招聘刚需 :2026年90%的前端岗位都要求「熟悉Vue3」,掌握Vue3是前端找工作的核心基础技能,薪资也比只会原生JS的高;
- ✅ 性能优秀,轻量化:Vue3比Vue2运行更快、体积更小,支持按需引入,适配PC端、移动端所有开发场景;
- ✅ 语法灵活,渐进式框架:可以按需学习,不用一次性学完所有内容,学一点用一点,比如先写简单页面,再学组件、路由,循序渐进无压力。
✔️ 3. Vue3 和 Vue2 的核心区别(零基础只需了解 不用深究)
很多小白会纠结要不要先学Vue2,这里给你2026年明确结论 :零基础直接学Vue3即可,完全不用学Vue2!
- ✅ Vue3是Vue的未来,所有新项目、企业新项目都用Vue3开发,Vue2已进入维护阶段,几乎不再用于新项目;
- ✅ Vue3的语法更简洁、更符合现代JS规范,零基础学Vue3没有任何历史包袱,反而更容易理解;
- ✅ 核心区别:Vue3主推 组合式API(Composition API) ,Vue2主推 选项式API(Options API),Vue3完全兼容选项式API,学了Vue3能看懂Vue2代码,反之则不行。
✔️ 4. Vue3 核心学习原则(零基础避坑 重中之重)
这是零基础学Vue3最核心的避坑指南,99%的小白踩坑都是因为违背了这个原则,一定要牢记:
✅ 「先会用,再理解」,「多动手,少死记」
- 不用一开始就深究原理,先跟着案例敲代码,能实现功能就好,写多了自然理解底层逻辑;
- Vue3的核心语法就那些,所有复杂项目都是基础语法的组合,吃透基础,就能应对80%的开发需求;
- 拒绝「眼会手不会」,所有案例一定要亲手敲一遍,运行成功再做修改,手感比看一百遍都重要。
✔️ 5. 学习目标(零基础清晰认知)
学完本基础版所有内容,你能掌握 Vue3 开发的核心基础能力 ,达到2026年企业对「Vue3初级开发」的基础要求:
✅ 熟练搭建Vue3+Vite开发环境,能独立创建Vue3项目;
✅ 吃透Vue3的核心语法:模板语法、响应式数据、事件绑定、计算属性、侦听器等;
✅ 掌握Vue3的组件开发:父子组件通信、组件复用、Props传值、插槽使用;
✅ 学会Vue3的两个核心配套库:VueRouter4(路由)、Pinia(状态管理);
✅ 能独立开发一个完整的Vue3单页面应用(SPA),比如待办清单、商品列表、简易管理后台;
✅ 具备阅读Vue3官方文档和解决基础开发问题的能力。
二、Vue3 开发环境搭建(2026最新极简版 · 零基础一键搞定 无坑)
✅ 核心说明:2026年Vue3的官方推荐、最优开发环境 是:
Vue3 + Vite + npm/pnpm + VS Code,这也是企业开发的标配,零基础无脑按这个配置即可 ,没有更简单的方案了!✅ 前置要求:电脑上需要安装 Node.js(18.x及以上版本) ,Node.js自带npm包管理器,安装后才能创建Vue3项目。(Node.js安装无脑下一步即可,官网下载:nodejs.org)
✅ 开发工具:VS Code(免费、轻量、插件丰富,前端开发标配,无其他选择)
✔️ 环境搭建 三步搞定(零基础复制命令即可 全程无脑操作)
✅ 第一步:安装VS Code必备插件(开发Vue3必装 提升效率)
打开VS Code,在左侧「扩展」面板搜索安装以下插件,全部勾选「启用」,不用重启即可生效:
Vue - Official:Vue官方插件,提供Vue3语法高亮、代码提示、格式化,必装;Volar:Vue3专属语法支持,替代老旧的Vetur,必装;Chinese (Simplified):VS Code中文语言包,零基础友好;Auto Rename Tag:自动同步HTML标签的修改,写代码更省心。
✅ 第二步:创建Vue3项目(打开电脑终端/VS Code终端 复制命令)
终端打开方式:Windows用Win+R输入cmd,Mac用启动台打开终端,VS Code中按 `Ctrl + `` 快速打开终端。
bash
# 方式1:使用npm创建(推荐零基础,Node.js自带,无需额外安装)
npm create vue@latest
# 方式2:使用pnpm创建(2026企业主流,更快、更省空间,安装:npm install -g pnpm)
pnpm create vue@latest
✅ 第三步:项目创建后的「傻瓜式选择」(零基础必看 按这个选 无坑)
执行上面的命令后,终端会出现一系列选择,零基础按以下配置选择即可,全程回车/输入对应字母,不用纠结:
- 输入项目名称:比如
vue3-demo,回车; - 是否使用TypeScript:No(零基础先学JS版,后续进阶再学TS,降低入门难度);
- 是否使用JSX:No;
- 是否安装Pinia:Yes(Vue3官方状态管理库,必装,核心);
- 是否安装Vue Router:Yes(Vue3官方路由库,必装,核心);
- 是否安装ESLint:No(代码校验,零基础暂时不用,避免报错);
- 其他选项全部选 No;
- 最后终端会提示进入项目、安装依赖、运行项目,复制终端的3条命令依次执行即可:
bash
cd vue3-demo # 进入项目目录
npm install # 安装项目依赖
npm run dev # 启动开发服务器
✔️ 启动成功 大功告成!
执行 npm run dev 后,终端会显示一个本地地址(比如 http://localhost:5173/),复制这个地址打开浏览器,就能看到Vue3的默认页面,恭喜你!零基础的你已经成功搭建并启动了第一个Vue3项目。
✔️ Vue3项目目录结构(零基础必懂 精简版 只记核心文件)
零基础不用记所有文件,只需要认识以下核心文件/文件夹,99%的开发工作都在这些地方完成,其他文件暂时不用管,避免增加负担:
vue3-demo/
├── node_modules/ # 项目依赖包,不用修改
├── src/ # 项目核心源码目录,所有代码都写在这里 ✅重中之重✅
│ ├── assets/ # 静态资源:图片、CSS样式、字体等
│ ├── components/# 公共组件目录:可复用的Vue组件(比如按钮、卡片) ✅核心✅
│ ├── router/ # 路由配置文件:页面跳转规则 ✅核心✅
│ ├── stores/ # Pinia状态管理:全局数据存储 ✅核心✅
│ ├── views/ # 页面组件目录:首页、列表页、详情页等 ✅核心✅
│ ├── App.vue # 根组件,所有页面的入口 ✅核心✅
│ └── main.js # 项目入口文件,初始化Vue实例 ✅核心✅
├── index.html # 项目入口HTML,不用修改
└── package.json # 项目配置文件,脚本命令/依赖管理
三、Vue3 核心基础语法(⭐⭐⭐⭐⭐ 重中之重 使用率100% 零基础必学必背)
✅ 核心定位:这是 Vue3的灵魂知识点 ,也是零基础入门的核心,所有Vue3项目都是基于这些基础语法搭建的,占开发比重的90% ;
✅ 学习方式:所有语法都基于 Vue3的单文件组件(.vue文件) ,一个.vue文件就是一个独立的Vue组件,包含「HTML结构、CSS样式、JS逻辑」三部分,完美分离,零基础一看就懂;
✅ 所有案例都可以直接写在你的Vue3项目的
src/components/目录下,运行项目即可看到效果,边学边敲 立竿见影!
✔️ 前置必懂:Vue3单文件组件(.vue)的基本结构(固定不变 必记)
每个.vue文件都由 3个核心标签 组成,这是Vue3的基础规范,所有代码都必须写在对应的标签里,零基础死记即可:
vue
<!-- 文件名:HelloVue.vue -->
<template>
<!-- 1. HTML结构:页面展示的内容,所有标签写在这里 -->
<div class="hello">
<h1>Hello Vue3!</h1>
</div>
</template>
<script setup>
// 2. JS逻辑:Vue3的核心代码,响应式数据、方法、导入导出等,写在这里
// setup 是Vue3的语法糖,零基础所有代码都写在这个标签里即可 ✅重中之重✅
console.log('我是Vue3的JS逻辑')
</script>
<style scoped>
/* 3. CSS样式:页面样式,scoped表示样式只作用于当前组件,不会污染其他组件 */
.hello {
color: #42b983;
text-align: center;
margin-top: 50px;
}
</style>
✨ 核心说明:
script setup是Vue3的语法糖,2026年所有Vue3项目都用这个写法,简化了大量代码,零基础不用理解原理,直接用就好,这是官方推荐的最优写法!
✔️ 1. 模板语法 & 插值表达式 {{ }} (必学 使用率100%)
✅ 核心作用
在<template>的HTML结构中,绑定JS中的数据 ,实现「数据渲染到页面」的核心功能,这是Vue3的最基础语法,没有之一。
✅ 语法规则
vue
<template>
<!-- 基础用法:直接渲染变量 -->
<p>我的名字:{{ name }}</p>
<!-- 支持简单的JS表达式:运算、三元运算符、字符串拼接 -->
<p>我的年龄+1:{{ age + 1 }}</p>
<p>是否成年:{{ age >= 18 ? '是' : '否' }}</p>
<p>完整信息:{{ name + ',今年' + age + '岁' }}</p>
</template>
<script setup>
// 定义页面需要的变量
const name = 'Vue3小白'
const age = 20
</script>
✅ 零基础必记规则
{``{ }}里面只能写 单个JS表达式,不能写语句(比如if/for循环);- 数据和页面是「联动」的:修改JS中的变量值,页面会自动更新,不用手动操作DOM,这就是Vue的「数据驱动视图」核心思想;
- 这是Vue3最核心的语法,所有页面渲染都离不开它,必须熟练掌握。
✔️ 2. 响应式数据(⭐⭐⭐⭐⭐ 核心中的核心 必学必懂)
✅ 什么是响应式数据?(白话版 零基础秒懂)
上面的例子中,我们定义的const name = 'Vue3小白'是普通变量 ,如果在JS中修改这个变量的值,页面不会更新 !
Vue3的「响应式数据」就是:被Vue3监听的变量,当变量的值发生改变时,页面会自动同步更新,这是Vue3实现「数据驱动视图」的核心机制。
✅ 一句话总结:开发Vue3项目,所有需要在页面展示且可能变化的数据,都必须定义为「响应式数据」!
✅ Vue3定义响应式数据的2种核心方式(零基础必学 够用所有场景)
Vue3提供了两个核心API来定义响应式数据,全部在 script setup 中使用,零基础只需要学这2种,足够应对99%的开发需求,不用学其他复杂方式!
✅ 方式1:ref ------ 定义「基本类型」响应式数据(必学 使用率60%)
适用于:数字、字符串、布尔值 这类基本类型数据,比如年龄、姓名、开关状态。
vue
<template>
<p>当前计数:{{ count }}</p>
<button @click="addCount">点击+1</button>
</template>
<script setup>
// 第一步:从vue中导入ref
import { ref } from 'vue'
// 第二步:用ref定义响应式数据,参数是默认值
const count = ref(0) // 数字
const name = ref('Vue3') // 字符串
const isShow = ref(true) // 布尔值
// 定义方法:修改响应式数据
const addCount = () => {
// 注意:JS中修改ref定义的数据,需要加 .value
count.value += 1
}
</script>
✨ 零基础必记规则:
- ref定义的数据,在中使用时,直接写变量名即可(不用.value);
- ref定义的数据,在
✅ 方式2:reactive ------ 定义「引用类型」响应式数据(必学 使用率40%)
适用于:对象、数组 这类引用类型数据,比如用户信息、商品列表、表单数据,这是开发中处理复杂数据的核心方式。
vue
<template>
<p>姓名:{{ user.name }}</p>
<p>年龄:{{ user.age }}</p>
<p>爱好:{{ hobbies }}</p>
<button @click="updateData">修改数据</button>
</template>
<script setup>
// 第一步:从vue中导入reactive
import { reactive } from 'vue'
// 第二步:用reactive定义响应式对象/数组
const user = reactive({
name: 'Vue3小白',
age: 20
})
const hobbies = reactive(['看电影', '写代码', '学Vue3'])
// 定义方法:修改reactive数据,不用加.value,直接修改即可
const updateData = () => {
user.name = 'Vue3大神'
user.age = 22
hobbies.push('打游戏')
}
</script>
✨ 零基础必记规则:
- reactive只能定义「对象/数组」,不能定义基本类型;
- 修改reactive数据时,无论在template还是script中,都不用加.value,直接修改属性/元素即可;
- 开发中:简单数据用ref,复杂数据用reactive,搭配使用效率最高。
✔️ 3. 指令系统(⭐⭐⭐⭐⭐ 必学 使用率100% 模板核心)
Vue3提供了一系列内置指令 ,指令是以 v- 开头的特殊HTML属性,写在<template>的标签上,用来实现「页面逻辑控制」,比如条件渲染、循环渲染、绑定属性等。
指令是Vue3模板语法的核心,零基础只需要学以下6个核心指令,够用所有开发场景,语法简单固定,必记必背!
✅ 通用规则:所有指令的属性值,都是 JS表达式,可以直接写变量、运算、三元运算符等。
✅ 指令1:v-bind ------ 绑定HTML属性(必学 使用率极高)
作用 :动态绑定HTML标签的任意属性,比如src、href、class、style、disabled等,简写为 :(2026年全部用简写,必学)。
vue
<template>
<!-- 绑定图片src属性 -->
<img :src="imgUrl" alt="图片">
<!-- 绑定a标签href属性 -->
<a :href="linkUrl">Vue3官网</a>
<!-- 绑定class类名:布尔值控制是否生效 -->
<div :class="{ active: isActive }">动态类名</div>
<!-- 绑定style样式 -->
<div :style="{ color: textColor, fontSize: '20px' }">动态样式</div>
</template>
<script setup>
import { ref } from 'vue'
const imgUrl = ref('https://vuejs.org/images/logo.png')
const linkUrl = ref('https://vuejs.org/')
const isActive = ref(true)
const textColor = ref('#42b983')
</script>
<style>
.active { color: red; font-weight: bold; }
</style>
✅ 指令2:v-on ------ 绑定事件(必学 使用率100%)
作用 :给HTML标签绑定事件(点击、鼠标移入、键盘按下等),简写为 @(2026年全部用简写,必学),这是实现「页面交互」的核心指令。
vue
<template>
<p>计数:{{ count }}</p>
<!-- 绑定点击事件 -->
<button @click="addCount">点击+1</button>
<!-- 绑定事件并传递参数 -->
<button @click="addNum(5)">点击+5</button>
<!-- 绑定鼠标移入事件 -->
<div @mouseenter="showMsg">鼠标移入我试试</div>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
const addCount = () => { count.value += 1 }
const addNum = (num) => { count.value += num }
const showMsg = () => { alert('鼠标移入啦!') }
</script>
✨ 常用事件:
@click(点击)、@input(输入框变化)、@change(下拉框变化)、@submit(表单提交),这4个足够应对开发需求。
✅ 指令3:v-if / v-else / v-else-if ------ 条件渲染(必学 使用率极高)
作用 :根据条件「控制元素是否渲染到页面」,条件为true则显示,false则隐藏(隐藏时会从DOM中删除元素),适合「需要切换显示/隐藏的场景」。
vue
<template>
<div v-if="score >= 90">优秀</div>
<div v-else-if="score >= 80">良好</div>
<div v-else-if="score >= 60">及格</div>
<div v-else>不及格</div>
</template>
<script setup>
import { ref } from 'vue'
const score = ref(88)
</script>
✅ 指令4:v-show ------ 条件显示(必学 使用率极高)
作用 :根据条件「控制元素是否显示」,条件为true则显示,false则隐藏(隐藏时只是设置display:none,元素还在DOM中)。
✅ 零基础必懂区别:
v-ifvsv-show
v-if:适合「不常切换」的场景(比如登录/未登录状态),性能更好;v-show:适合「频繁切换」的场景(比如弹窗显示/隐藏、开关按钮),切换速度更快;
vue
<template>
<button @click="isShow = !isShow">切换显示</button>
<div v-show="isShow">我是v-show控制的元素</div>
</template>
<script setup>
import { ref } from 'vue'
const isShow = ref(true)
</script>
✅ 指令5:v-for ------ 循环渲染(⭐⭐⭐⭐⭐ 必学 使用率100%)
作用 :根据「数组/对象」循环渲染页面元素,比如渲染商品列表、用户列表、菜单选项,这是开发中最常用的指令之一,没有它就做不了列表展示!
vue
<template>
<!-- 循环数组:item是当前项,index是当前索引 -->
<ul>
<li v-for="(item, index) in goodsList" :key="index">
{{ index + 1 }} - {{ item.name }} - 价格:{{ item.price }}元
</li>
</ul>
</template>
<script setup>
import { reactive } from 'vue'
// 商品列表(数组对象)
const goodsList = reactive([
{ name: '小米手机', price: 1999 },
{ name: '华为平板', price: 2499 },
{ name: '苹果耳机', price: 1299 }
])
</script>
✨ 零基础必记规则:v-for必须搭配 :key 属性,:key的值必须是「唯一的」(比如index索引、数据的id),这是Vue3的硬性要求,能提升渲染性能,避免报错。
✅ 指令6:v-model ------ 双向数据绑定(⭐⭐⭐⭐⭐ 必学 使用率100%)
作用 :实现「表单元素的值」和「Vue的响应式数据」双向联动:
- 表单元素输入内容 → 响应式数据自动更新;
- 响应式数据被修改 → 表单元素的值自动同步;
这是开发表单页面(登录、注册、编辑信息) 的核心指令,没有它表单开发会变得极其繁琐!
vue
<template>
<!-- 输入框双向绑定 -->
<input v-model="username" placeholder="请输入用户名">
<p>你输入的用户名:{{ username }}</p>
<!-- 密码框双向绑定 -->
<input type="password" v-model="password" placeholder="请输入密码">
<!-- 下拉框双向绑定 -->
<select v-model="city">
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="广州">广州</option>
</select>
<p>你选择的城市:{{ city }}</p>
</template>
<script setup>
import { ref } from 'vue'
const username = ref('')
const password = ref('')
const city = ref('北京')
</script>
✨ 适用表单元素:
input、textarea、select、checkbox、radio,全部支持v-model双向绑定。
✔️ 4. 计算属性 & 侦听器(必学 使用率80% 提升代码质量)
这两个是Vue3的核心工具API,用来处理「复杂数据逻辑」和「监听数据变化」,能让你的代码更简洁、更高效,零基础必须掌握,这是从「入门」到「熟练」的分水岭。
✅ 计算属性 (computed) ------ 处理复杂数据逻辑(必学)
核心作用 :对已有的响应式数据进行「加工、计算、格式化」,返回新的值,并且有缓存:只有依赖的数据发生变化时,才会重新计算,否则直接返回缓存结果。
✅ 适用场景:数据格式化(比如时间戳转日期)、数据拼接(比如姓+名)、条件计算(比如总价=单价*数量),替代模板中的复杂表达式,让代码更清晰。
vue
<template>
<p>原价:{{ price }}元</p>
<p>折扣价:{{ discountPrice }}元</p>
<p>姓:{{ firstName }}</p>
<p>名:{{ lastName }}</p>
<p>全名:{{ fullName }}</p>
</template>
<script setup>
import { ref, computed } from 'vue'
const price = ref(100)
const firstName = ref('张')
const lastName = ref('三')
// 定义计算属性:处理折扣价
const discountPrice = computed(() => {
return (price.value * 0.8).toFixed(2)
})
// 定义计算属性:拼接全名
const fullName = computed(() => {
return firstName.value + lastName.value
})
</script>
✅ 侦听器 (watch) ------ 监听数据变化(必学)
核心作用:监听「响应式数据」的变化,当数据发生改变时,自动执行对应的逻辑,比如:请求接口、修改其他数据、弹出提示等。
✅ 适用场景:数据变化后需要执行异步操作(比如输入框搜索,输入完成后请求接口)、数据变化后需要联动修改其他数据、监听表单输入做校验等。
vue
<template>
<input v-model="keyword" placeholder="请输入搜索关键词">
<p>你输入的关键词:{{ keyword }}</p>
</template>
<script setup>
import { ref, watch } from 'vue'
const keyword = ref('')
// 监听单个数据的变化
watch(keyword, (newVal, oldVal) => {
console.log('关键词从', oldVal, '变成了', newVal)
// 实际开发中:这里可以写搜索接口请求逻辑
if (newVal) {
console.log('开始搜索:', newVal)
}
})
// 补充:监听多个数据的变化,用数组包裹
const name = ref('')
const age = ref(0)
watch([name, age], ([newName, newAge], [oldName, oldAge]) => {
console.log('姓名或年龄发生了变化')
})
</script>
四、Vue3 核心进阶:组件化开发(⭐⭐⭐⭐⭐ 重中之重 企业开发标配)
✅ 核心定位:组件化是Vue3的核心思想,也是企业开发的标配 ,没有组件化就做不了大型项目!
✅ 白话解释:组件化就是把一个「完整的页面」拆分成多个「独立的、可复用的小模块」,每个模块就是一个「组件」,比如:导航栏组件、头部组件、商品列表组件、按钮组件、卡片组件。
✅ 核心优势:复用性、可维护性、可读性 ,一个组件可以在多个页面复用,修改组件时只需要改一处,所有使用的地方都会同步更新,开发大型项目时事半功倍。
✅ 零基础必懂:Vue3的
.vue文件,本身就是一个独立的组件,组件化开发就是「组件嵌套组件」的过程。
✔️ 1. 组件的核心概念(零基础必懂 白话解释)
- 全局组件:在项目中任何地方都可以使用的组件,比如按钮、弹窗、加载动画;
- 局部组件:只能在当前组件中使用的组件,比如页面中的某个模块、列表项;
- 父组件/子组件:组件嵌套时,外层的组件是父组件,内层的组件是子组件,比如「首页组件」是父组件,「商品列表组件」是子组件;
- 组件通信:父组件和子组件之间的数据传递,这是组件化开发的核心问题,零基础只需要学「父子组件通信」即可,足够应对99%的开发需求。
✔️ 2. 组件的定义与使用(零基础必学 三步搞定 极简)
Vue3中定义和使用组件的方式极其简单,所有组件都在 script setup 中处理,零基础按以下三步操作即可,这是固定流程,不用记原理:
✅ 步骤1:创建组件文件(比如:src/components/HelloWorld.vue)
vue
<!-- src/components/HelloWorld.vue -->
<template>
<div class="hello">
<h2>我是一个独立的Vue组件</h2>
<p>组件可以被任意页面复用</p>
</div>
</template>
<script setup></script>
<style scoped>
.hello { color: #42b983; padding: 20px; border: 1px solid #eee; }
</style>
✅ 步骤2:在父组件中「导入组件」
vue
<!-- src/views/HomeView.vue -->
<script setup>
// 导入组件:路径是组件文件的位置
import HelloWorld from '@/components/HelloWorld.vue'
</script>
✅ 步骤3:在父组件的<template>中「使用组件」
vue
<template>
<h1>我是首页(父组件)</h1>
<!-- 直接写组件名,当作标签使用即可 -->
<HelloWorld />
<!-- 组件可以复用多次 -->
<HelloWorld />
</template>
✨ 运行效果:页面会显示两个相同的HelloWorld组件内容,这就是组件的「复用性」,零基础的你已经学会了组件化开发的核心流程!
✔️ 3. 父子组件通信(⭐⭐⭐⭐⭐ 必学 使用率100% 组件化核心)
✅ 什么是组件通信?(白话版 零基础秒懂)
父组件和子组件是独立的,它们的响应式数据也是独立的,组件通信就是「父组件和子组件之间的数据传递」,这是组件化开发的核心问题,没有通信,组件就是孤立的,无法协同工作。
✅ 前端开发中,组件通信只有2种核心场景,零基础只需要学这2种,够用所有开发需求,不用学其他复杂的通信方式:
- 父组件 → 子组件:父传子,传递数据(比如父组件把商品数据传给子组件展示);
- 子组件 → 父组件:子传父,传递事件/数据(比如子组件的按钮点击事件,让父组件处理)。
✅ 场景1:父组件 → 子组件 传值(Props)【必学 使用率90%】
这是最常用的通信方式,父组件通过属性的方式给子组件传值,子组件通过defineProps接收值,语法固定,三步搞定:
✅ 父组件(传值方):给子组件绑定属性
vue
<!-- 父组件:src/views/HomeView.vue -->
<template>
<h1>父组件</h1>
<!-- 给子组件绑定属性,传递数据 -->
<Son :title="parentTitle" :list="parentList" />
</template>
<script setup>
import Son from '@/components/Son.vue'
import { ref, reactive } from 'vue'
// 父组件的响应式数据
const parentTitle = ref('我是父组件传递的标题')
const parentList = reactive(['Vue3', '组件通信', '父传子'])
</script>
✅ 子组件(接收方):用defineProps接收父组件的传值
vue
<!-- 子组件:src/components/Son.vue -->
<template>
<div class="son">
<h2>子组件</h2>
<p>{{ title }}</p>
<ul>
<li v-for="(item, index) in list" :key="index">{{ item }}</li>
</ul>
</div>
</template>
<script setup>
// 子组件接收父组件的传值,defineProps是Vue3内置的,无需导入
const props = defineProps({
title: String, // 规定传值的类型:字符串
list: Array // 规定传值的类型:数组
})
// 在script中使用:props.title / props.list
console.log(props.title)
</script>
✨ 核心规则:子组件只能读取 父组件传递的Props值,不能直接修改,这是Vue3的单向数据流规则,避免数据混乱。
✅ 场景2:子组件 → 父组件 传值/传事件(defineEmits)【必学 使用率90%】
子组件不能直接修改父组件的数据,也不能直接触发父组件的方法,需要通过「触发事件」的方式,把数据传递给父组件,由父组件自己处理,语法固定,三步搞定:
✅ 子组件(触发方):用defineEmits定义事件,触发事件并传递数据
vue
<!-- 子组件:src/components/Son.vue -->
<template>
<div class="son">
<h2>子组件</h2>
<button @click="sendMsg">点击给父组件传值</button>
</div>
</template>
<script setup>
// 定义事件:defineEmits是Vue3内置的,无需导入
const emit = defineEmits(['getChildMsg'])
// 触发事件,并传递数据给父组件
const sendMsg = () => {
emit('getChildMsg', '我是子组件传递的消息', 666)
}
</script>
✅ 父组件(接收方):监听子组件的事件,接收数据并处理
vue
<!-- 父组件:src/views/HomeView.vue -->
<template>
<h1>父组件</h1>
<p>子组件传递的消息:{{ childMsg }}</p>
<!-- 监听子组件的事件,绑定父组件的方法 -->
<Son @getChildMsg="handleChildMsg" />
</template>
<script setup>
import Son from '@/components/Son.vue'
import { ref } from 'vue'
const childMsg = ref('')
// 处理子组件的事件,接收子组件传递的数据
const handleChildMsg = (msg, num) => {
childMsg.value = msg
console.log('子组件传递的数字:', num)
}
</script>
✨ 核心规则:子组件负责「触发事件」,父组件负责「监听事件并处理」,这是Vue3的核心通信规则,必须熟练掌握。
五、Vue3 核心生态:VueRouter4 + Pinia(⭐⭐⭐⭐⭐ 必学 企业开发标配 缺一不可)
✅ 核心定位:Vue3本身只是一个「视图层框架」,只能处理单页面的开发,而真实的前端项目都是「多页面应用」(比如首页、列表页、详情页、登录页),需要两个核心库来支撑:
- VueRouter4:Vue3官方路由库,负责「页面跳转、路由管理、地址栏控制」,实现多页面的切换;
- Pinia :Vue3官方状态管理库,负责「全局数据存储」,比如用户信息、购物车数据、全局配置,让所有页面都能共享这些数据;
✅ 重要性:这两个库是Vue3项目的标配,没有它们就做不了完整的项目 ,零基础必须掌握,这是从「写组件」到「做项目」的关键一步!
✅ 好消息:你在创建项目时已经勾选安装了这两个库,不用再手动安装,直接学习使用即可,无缝衔接!
✔️ 1. VueRouter4 路由核心(必学 使用率100% 多页面开发基础)
✅ 什么是路由?(白话版 零基础秒懂)
路由就是「地址栏的URL路径 」和「Vue组件 」之间的映射关系:比如访问 http://localhost:5173/home 显示首页组件,访问 http://localhost:5173/about 显示关于页组件,访问 http://localhost:5173/login 显示登录页组件。
VueRouter就是用来配置这个映射关系,实现「地址栏变化 → 页面组件自动切换」的核心库,不用手动操作DOM,这是Vue3实现多页面应用的唯一方式。
✅ VueRouter4 核心使用(零基础必学 精简版 够用所有场景)
你的项目中已经自动生成了路由配置文件:src/router/index.js,所有路由相关的配置都在这里,零基础只需要学「3个核心知识点」即可:
✅ 知识点1:配置路由规则(映射关系)
javascript
// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
// 导入页面组件
import HomeView from '../views/HomeView.vue'
import AboutView from '../views/AboutView.vue'
import LoginView from '../views/LoginView.vue'
// 路由规则:path是URL路径,component是对应的组件
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{ path: '/', name: 'home', component: HomeView }, // 默认首页
{ path: '/about', name: 'about', component: AboutView }, // 关于页
{ path: '/login', name: 'login', component: LoginView } // 登录页
]
})
export default router
✅ 知识点2:路由出口(显示页面组件)
在根组件 src/App.vue 中,有一个 <router-view /> 标签,这就是「路由出口」:所有匹配的页面组件,都会渲染到这个标签的位置,这是固定的,不用修改。
vue
<!-- src/App.vue -->
<template>
<header>
<!-- 路由导航:页面跳转链接 -->
<nav>
<RouterLink to="/">首页</RouterLink>
<RouterLink to="/about">关于</RouterLink>
<RouterLink to="/login">登录</RouterLink>
</nav>
</header>
<!-- 路由出口:页面组件渲染的位置 -->
<router-view />
</template>
✅ 知识点3:路由跳转的2种方式(必学 使用率100%)
- 声明式跳转 :用
<RouterLink to="路径">标签,相当于原生的<a>标签,适合「页面上的跳转链接」,比如导航栏、菜单; - 编程式跳转 :用
useRouter()API,在JS方法中跳转,适合「点击按钮后跳转、登录成功后跳转、表单提交后跳转」等场景,这是开发中最常用的方式。
vue
<template>
<!-- 声明式跳转 -->
<RouterLink to="/home">去首页</RouterLink>
<RouterLink to="/login">去登录</RouterLink>
<!-- 编程式跳转:点击按钮跳转 -->
<button @click="goHome">点击去首页</button>
<button @click="goLogin">点击去登录</button>
</template>
<script setup>
// 导入路由API
import { useRouter } from 'vue-router'
const router = useRouter()
// 编程式跳转方法
const goHome = () => { router.push('/home') }
const goLogin = () => { router.push('/login') }
</script>
✔️ 2. Pinia 状态管理核心(必学 使用率100% 全局数据共享)
✅ 什么是状态管理?(白话版 零基础秒懂)
状态就是「Vue的响应式数据」,状态管理就是「把多个页面/组件都需要用到的全局数据,统一存储在一个地方,所有页面都能访问和修改这些数据」。
✅ 适用场景:用户信息(登录后的用户名、头像、token)、购物车数据、全局主题配置、语言切换,这些数据需要在多个页面共享,用Pinia存储是最优选择。
✅ 为什么不用Vuex?Vuex是Vue2的状态管理库,Vue3官方已经废弃了Vuex,推荐使用 Pinia,Pinia的语法更简洁、更轻量化,零基础更容易上手,功能也更强大。
✅ Pinia 核心使用(零基础必学 精简版 够用所有场景)
你的项目中已经自动生成了Pinia配置文件:src/stores/counter.js,所有全局数据都存储在src/stores/目录下,零基础只需要学「3个核心知识点」即可,语法极其简单:
✅ 知识点1:创建Pinia仓库(存储全局数据)
javascript
// src/stores/user.js 新建一个用户仓库
import { defineStore } from 'pinia'
import { ref } from 'vue'
// 定义仓库:第一个参数是仓库名(唯一),第二个参数是仓库的内容
export const useUserStore = defineStore('user', () => {
// 1. 定义全局响应式数据(相当于Vue2的state)
const username = ref('')
const token = ref('')
const isLogin = ref(false)
// 2. 定义方法:修改全局数据(相当于Vue2的mutations/actions)
const login = (userInfo) => {
username.value = userInfo.name
token.value = userInfo.token
isLogin.value = true
}
const logout = () => {
username.value = ''
token.value = ''
isLogin.value = false
}
// 3. 导出数据和方法,供其他页面使用
return { username, token, isLogin, login, logout }
})
✅ 知识点2:在组件/页面中「使用Pinia仓库的数据和方法」
vue
<template>
<div v-if="userStore.isLogin">
<p>欢迎你:{{ userStore.username }}</p>
<button @click="logout">退出登录</button>
</div>
<div v-else>
<p>请先登录</p>
<button @click="login">模拟登录</button>
</div>
</template>
<script setup>
// 导入创建好的仓库
import { useUserStore } from '@/stores/user'
// 获取仓库实例
const userStore = useUserStore()
// 模拟登录
const login = () => {
userStore.login({ name: 'Vue3小白', token: '123456789' })
}
// 退出登录
const logout = () => {
userStore.logout()
}
</script>
✨ 核心优势:在任何页面/组件中,只要导入并使用这个仓库,就能访问和修改全局数据,数据是实时同步的,不用手动传递,这就是全局状态管理的魅力!
六、Vue3 零基础避坑指南(2026最新 高频踩坑点 看完少走99%弯路)
✅ 所有坑都是零基础小白学Vue3时最容易踩的高频坑,全部是实战总结,每一个坑都对应一个解决方案,看完立刻避开,节省大量调试时间,这是零基础的「保命指南」!
❌ Vue3零基础 TOP10 高频踩坑点(必记 看完不踩坑)
- 修改ref定义的响应式数据时,忘记加.value ,导致页面不更新,解决:
<script>中修改ref数据必须加.value; - 用reactive定义基本类型数据(比如
reactive(0)),导致数据不是响应式的,解决:基本类型用ref,对象/数组用reactive; - v-for循环时忘记加:key属性,导致控制台报错、渲染性能差,解决:v-for必须搭配:key,值用index或唯一id;
- 子组件直接修改父组件传递的Props值,导致控制台报错,解决:子组件只能读Props,不能改,要改就通过事件传给父组件;
- 导入组件时路径写错(比如大小写错误、路径层级错误),导致组件找不到,解决:VS Code会自动提示路径,尽量用自动补全;
- 定义方法时函数名写错 ,或者调用方法时方法名写错,导致点击事件无效,解决:检查函数名是否一致;
- 用v-model绑定非表单元素(比如div、p),导致报错,解决:v-model只能绑定表单元素;
- 路由跳转时路径写错,导致页面空白,解决:检查路由配置的path是否和跳转的路径一致;
- Pinia仓库中定义的数据,忘记在return中导出,导致页面访问不到,解决:所有需要外部访问的数据/方法都要在return中导出;
- 计算属性中写了异步逻辑(比如请求接口),导致报错,解决:计算属性只能写同步逻辑,异步逻辑用watch或方法。
✅ Vue3零基础学习黄金原则(必看 受益匪浅)
- 先完成,再完美:零基础开发时,先实现功能,不用纠结代码是否最优,功能实现后再慢慢优化,不要因为追求完美而卡住进度;
- 多敲代码,少看视频:看视频只能学思路,敲代码才能练手感,所有案例一定要亲手敲一遍,运行成功后再做修改,眼会手不会是零基础的大忌;
- 善用官方文档:Vue3的官方文档是最好的学习资料,清晰易懂、案例丰富,遇到问题先查文档,比搜百度更靠谱;
- 不要死记硬背:Vue3的语法都是有规律的,理解「数据驱动视图」「组件化」的核心思想,语法自然就记住了,死记硬背容易忘;
- 从小项目入手:零基础不要一开始就做大型项目,先做小项目(比如待办清单、商品列表),吃透基础后再逐步升级,循序渐进。
七、Vue3零基础完整学习路线(2026最新 科学合理 不走弯路)
✅ 阶段一:夯实基础(本次内容,3-5天 重中之重)
✅ 吃透Vue3的核心语法:模板语法、插值表达式、响应式数据(ref/reactive)、指令系统(v-model/@click/v-for等);
✅ 掌握计算属性、侦听器,能处理复杂数据逻辑;
✅ 学会组件化开发:组件的定义、导入、使用,父子组件通信(Props/emit);
✅ 掌握VueRouter4和Pinia的基础使用,能实现多页面跳转和全局数据共享;
✅ 目标:能独立开发简单的Vue3组件和页面,理解Vue3的核心思想。
✅ 阶段二:实战巩固(2-3天 核心 从语法到项目)
✅ 实战项目1:开发一个「待办清单(TodoList)」,实现添加、删除、修改、筛选待办事项,用到v-for、v-model、组件通信、本地存储;
✅ 实战项目2:开发一个「商品列表页」,实现商品展示、分页、搜索、筛选,用到VueRouter、Pinia、计算属性、watch;
✅ 核心目标:把所有基础语法融会贯通,能独立完成一个完整的Vue3小项目,具备解决基础开发问题的能力。
✅ 阶段三:进阶学习(5-7天 2026企业刚需 加分项)
✅ 学习Vue3的「生命周期钩子」,理解组件的创建、挂载、更新、销毁过程;
✅ 学习Vue3的「插槽」,实现组件的灵活复用;
✅ 学习「TypeScript+Vue3」整合开发,这是2026年企业的硬性要求;
✅ 学习Vue3的「组合式API进阶」,比如provide/inject、toRefs、computed进阶;
✅ 目标:能开发企业级规范的Vue3项目,具备对接真实开发需求的能力。
✅ 阶段四:生态拓展(按需学习 提升开发效率)
✅ 学习Vue3的UI组件库:Element Plus(PC端)、Vant4(移动端),这是企业开发的标配,能快速搭建页面;
✅ 学习Axios请求库,实现Vue3项目和后端接口的联动(对接你之前学的Node.js+MySQL);
✅ 学习Vue3的打包部署,把项目打包成静态文件,部署到服务器;
✅ 目标:形成「Vue3+TS+Element Plus+Axios+Node.js+MySQL」的完整全栈技术闭环,能独立开发商业项目。
最后:写给Vue3零基础小白的心里话
恭喜你!学完本次Vue3基础版,你已经成功入门了目前前端最主流的框架,也掌握了前端开发的核心基础技能。
从只会写原生HTML/CSS/JS,到能独立搭建Vue3项目、写组件、做页面交互、实现多页面跳转,你已经完成了「前端新手」到「前端入门工程师」的蜕变。这份能力,不仅能让你快速上手前端开发,还能为后续学习TS、全栈开发打下坚实的基础。
Vue3的学习之路,没有想象中那么难,它的核心思想就是「数据驱动视图」和「组件化开发」,所有语法都是为了让你更轻松地写代码。你不需要一开始就成为大神,只需要一步一个脚印,多敲代码、多做项目、多解决问题,慢慢就会发现,Vue3的开发其实很简单。
2026年的前端开发,Vue3依然是主流,掌握Vue3,你就拥有了进入前端行业的核心敲门砖。坚持下去,你会发现,前端开发不仅是一份工作,更是一种创造的乐趣------用代码把想法变成看得见的页面,这种成就感,是无价的。
加油!零基础的你,也能学好Vue3,也能成为优秀的前端工程师。你的前端之路,才刚刚开始,未来可期!💪
附:Vue3基础版核心知识点速查表(零基础必备 随时查阅 按使用率排序)
| 知识点模块 | 核心语法/API | 作用 | 使用率 |
|---|---|---|---|
| 响应式数据 | ref() / reactive() | 定义响应式变量/对象/数组 | 100% |
| 模板语法 | {{ 变量/表达式 }} | 渲染数据到页面 | 100% |
| 核心指令 | v-model / @click / v-for / v-if / :src | 双向绑定、事件、循环、条件、属性绑定 | 100% |
| 组件化开发 | 组件导入/使用、defineProps、defineEmits | 组件复用、父子通信 | 100% |
| 计算属性/侦听器 | computed() / watch() | 数据计算、监听数据变化 | 80% |
| 路由 | VueRouter4、router.push()、RouterLink | 多页面跳转、路由管理 | 100% |
| 状态管理 | Pinia、defineStore() | 全局数据共享、状态管理 | 100% |
| 核心思想 | 数据驱动视图、组件化开发 | Vue3的核心设计理念 | 贯穿始终 |