ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

5小时学会Vue3:从零基础到跑通项目的实操学习路线

5小时学会Vue3:从零基础到跑通项目的实操学习路线 把“5小时学会Vue3”当成一个合理目标之前先要接受一个现实5小时不可能让你从零基础变成精通但完全足够让你把Vue3的开发链路跑通让你能看懂项目、能照着写页面、能处理最常见的报错。这套学习路线真正要解决的是新手最常见的三个问题不知道先学什么、不知道学到什么程度算会、不知道写完代码之后怎么验证。如果你是刚接触前端、或者会一点HTML/CSS/JavaScript但没写过完整项目的零基础小白这篇文章就是按“5小时上手Vue3”的目标拆出来的实操路线。我把环境搭建、核心语法、路由、状态管理、请求封装、UI组件、练手项目和面试重点按顺序整理了一遍每一步都标注了验证标准。1. 5小时学Vue3的前提先想清楚学什么、学到什么程度1.1 Vue3到底是什么零基础要先补哪些前置知识Vue3是一个用于构建用户界面的JavaScript框架目前web前端开发里非常主流。它的核心价值是让“数据”和“页面”之间产生绑定关系数据变了页面自动更新页面操作触发事件数据跟着变化。这套机制叫响应式是Vue3和原生JavaScript开发最大的区别。零基础直接学Vue3行不行可以但建议至少补三个前置概念不用太深能看懂就行HTML知道div、span、button这些标签是干什么的。CSS知道类名怎么用、样式怎么生效、怎么覆盖默认样式。JavaScript知道变量let/const、函数function/箭头函数、对象、数组、if/else、循环的基本写法。如果你完全没接触过JavaScript不建议直接硬啃Vue3。最少花一周左右把JavaScript基础语法过一遍再回来看Vue3会顺畅很多。Vue3本身没有改变JavaScript语法只是在JavaScript之上增加了一套组织代码的规则所以JavaScript基础越扎实学Vue3越不吃力。1.2 5小时学习目标怎么拆能写、能看、能改才是真入门5小时的学习目标应该非常具体不能是“把Vue3精通”这种模糊目标。按我实际带新人的经验5小时可以拆成五个阶段时间段学习内容完成标准第1小时环境配置、创建项目、启动项目浏览器能打开Vue3默认页面第2小时模板语法、指令、事件绑定、双向绑定能写一个带输入框和按钮的简单页面第3小时组合式APIref、reactive、computed、watch能管理页面里的数据状态第4小时组件创建、父子组件通信、路由配置能拆分组件能从一个页面跳到另一个页面第5小时Pinia状态管理、axios请求封装、跑通一个完整小项目能完成登录、列表展示、状态切换的简单功能这套拆法比“从入门到精通”靠谱得多。原因很简单每一步都有可验证的产出卡住了你也能判断到底是哪一步出了问题。学习过程中最忌讳的就是只看视频不动手以为自己记住了真到写代码时完全不知道从哪开始。注意5小时是理想节奏。如果你的电脑环境有问题、或者JavaScript基础偏弱可能需要延长到两天。延迟不可怕卡住不排查才可怕。2. 环境配置和第一个项目新手最容易卡在这一步2.1 Node.js、npm、脚手架装到什么程度算合格学习Vue3本地至少需要安装Node.js。Node.js是JavaScript的运行环境npm是随Node.js一起安装的包管理工具用来下载和管理依赖。打开命令行执行node -v npm -v如果两个命令都能输出版本号说明环境基本没问题。Vue3目前官方推荐使用Vite作为构建工具Vite对Node.js版本有要求一般建议Node.js 18及以上版本。版本太老会出现依赖安装失败或启动报错直接升级到当前LTS版本更省事。创建Vue3项目官方推荐使用create-vue脚手架npm create vuelatest执行后命令行会询问项目名称、是否使用TypeScript、是否使用Vue Router、是否使用Pinia等选项。第一次学习时建议只选择Vue Router和Pinia其他选项可以先不勾选。少选几个功能项目结构更简单更容易看懂。如果你更习惯用Vite直接创建项目也可以用npm create vitelatest my-vue-app -- --template vue两种方式创建出来的项目都能跑Vue3区别在于create-vue会额外生成更完整的工程化目录更适合学习和后续扩展。2.2 创建并启动一个Vue3项目判断标准是什么以npm create vuelatest为例完整流程是npm create vuelatest # 进入交互式命令行 # 输入项目名称例如 vue3-demo # 选择 Vue RouterYes # 选择 PiniaYes # 其余选项先选 No cd vue3-demo npm install npm run devnpm install会把项目依赖安装到node_modules目录这一步耗时取决于网络状况。安装完成后npm run dev会启动开发服务器。启动成功后命令行会显示一个本地访问地址通常是http://localhost:5173。在浏览器打开这个地址如果能看到一个带Vue logo的默认页面说明项目创建成功。这个页面里通常带着官方示例代码是学习Vue3的最好起点可以直接修改src目录下的文件保存后浏览器页面会自动刷新这就是Vite的热更新能力。2.3 启动失败时按什么顺序排查新手第一次启动失败非常常见不要慌按顺序排查看命令行报错信息报错一般会告诉你哪一步出了问题。检查Node.js版本node -v如果版本太低去Node.js官网下载LTS版本重新安装。检查依赖是否安装完整node_modules目录是否存在如果不完整重新执行npm install。检查端口是否被占用如果5173被占用Vite会自动换端口或者手动杀掉占用进程。检查网络问题执行npm install时如果出现超时、404可能是npm镜像源问题可以切换到国内镜像源。npm config set registry https://registry.npmmirror.com切换镜像后重新npm install大多数依赖安装问题都能解决。这里要特别注意报错里提示“无法找到模块”时优先怀疑依赖没装全而不是代码写错了。3. Vue3语法核心从模板语法到组合式API3.1 模板语法插值、指令、事件绑定一次过进入Vue3核心语法时先记住一个原则模板负责页面结构脚本负责数据和行为。打开src/App.vue你会看到文件分成了三部分template写HTML结构script setup写JavaScript逻辑style写样式。这种把结构、逻辑、样式放在一个文件里的写法叫单文件组件。最基础的用法是插值用双大括号把变量渲染到页面里template div{{ message }}/div /template script setup const message Hello Vue3 /script接下来是三个最常用的指令v-bind绑定属性简写为:。例如:classactiveClass可以把变量值动态绑定到class属性。v-on绑定事件简写为。例如clickhandleClick点击按钮时触发指定函数。v-if和v-for条件渲染和列表渲染。v-ifisShow控制元素显示隐藏v-foritem in list循环生成列表。还有一个几乎每个项目都会用到的指令v-model用于表单输入的双向绑定template input v-modelinputValue / p{{ inputValue }}/p /template script setup import { ref } from vue const inputValue ref() /script输入框里敲什么页面上的p标签就跟着显示什么。这就是“数据驱动页面”最直观的体现也是v-model的核心价值。3.2 组合式APIsetup、ref、reactive、computed、watchVue3和Vue2最大的区别就是组合式API。Vue2用的是选项式API把数据、方法、生命周期放在data、methods、mounted等固定位置Vue3更推荐在setup函数里用函数式的方式组织逻辑。现在写Vue3项目几乎都会用script setup语法糖它让代码更简洁不需要手动写setup函数和return语句。需要引入什么直接import需要暴露给模板的变量直接在script setup里声明即可。核心API四个ref用来创建响应式数据。const count ref(0)在JavaScript中访问时用count.value在模板中直接用count。reactive用来创建响应式对象。const state reactive({ name: 张三, age: 18 })修改时直接state.name 李四。computed根据已有数据计算新值且计算结果会被缓存。例如根据商品价格和数量计算总价script setup import { ref, computed } from vue const price ref(100) const count ref(2) const total computed(() price.value * count.value) /scriptwatch监听数据变化在数据变化后执行副作用。例如用户切换页面时保存状态、输入框值变化时触发搜索script setup import { ref, watch } from vue const keyword ref() watch(keyword, (newValue, oldValue) { console.log(搜索关键词变化, newValue) }) /script这4个API是组合式API的核心先用熟它们比背一堆API列表有用得多。入门阶段不用急着把所有API都记住碰到没见过的再查官方文档即可。3.3 组件通信props、emit、provide/inject组件是把页面拆分成复用单元的方式。比如一个后台管理系统里顶栏、侧边栏、表格、弹窗都可以是独立组件。父子组件通信是Vue3里必须掌握的基础能力父传子父组件通过自定义属性传递数据子组件用defineProps接收。!-- 父组件 -- ChildComponent :titlepageTitle / !-- 子组件 -- script setup defineProps({ title: String }) /script子传父子组件通过defineEmits定义事件父组件用事件名监听。!-- 子组件 -- script setup const emit defineEmits([close]) const handleClose () { emit(close) } /script !-- 父组件 -- ChildComponent closehandleClose /如果组件嵌套层级很深又不想一层层传可以使用provide和inject。在顶层组件用provide提供数据在任意子组件用inject注入数据。这个方案适合跨层级共享某些状态比如当前用户信息、主题配置等。注意组件通信越简单越好。能用props解决的不要上Pinia能用Pinia解决的不要用provide/inject传大量数据不然代码会越来越难维护。3.4 script setup 为什么现在默认都用它script setup是Vue3.2开始成为推荐的编写方式。它的好处很直接代码更少不需要写export default。不用手动return变量和方法模板直接可用。使用TypeScript时类型推断更自然。性能上相比Option API也有一定优势。现在新建的Vue3项目默认生成的就是script setup写法所以你不必纠结学哪一种直接学script setup就行。遇到老项目里的选项式API写法能看懂data和methods的意思就可以了不用深入研究。4. 把路由、状态和请求串起来这才算能写业务4.1 Vue Router路由跳转、动态路由、守卫Vue Router是Vue3官方的路由管理库。创建项目时选择了Vue Router项目里会自动生成路由配置目录。路由的作用是让http://localhost:5173/home、http://localhost:5173/about这些地址对应不同的页面组件。基础配置在src/router/index.js里import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vue const router createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: /, name: home, component: HomeView }, { path: /about, name: about, component: () import(../views/AboutView.vue) } ] }) export default router这里() import()是路由懒加载页面首次访问时才加载对应组件能减少首屏加载时间。页面跳转有两种方式!-- 模板中跳转 -- router-link to/about跳转到关于页/router-link !-- 编程式跳转 -- script setup import { useRouter } from vue-router const router useRouter() const goAbout () { router.push(/about) } /script动态路由在后台管理系统里很常见比如权限不同的人能看到的菜单不同。可以根据用户角色动态注册路由解决“根据权限显示不同首页”这类需求。路由守卫是控制页面访问权限的核心机制。最简单的登录拦截逻辑router.beforeEach((to, from, next) { const token localStorage.getItem(token) if (to.path /login) { next() } else if (!token) { next(/login) } else { next() } })这个逻辑解决的是没有登录就访问其他页面强制跳回登录页。实际项目中还会根据角色权限做更细的动态路由控制。4.2 Pinia比Vuex更好上手的全局状态管理如果你的项目里多个页面共享同一份数据比如登录用户信息、购物车数量、全局主题配置再用props一层层传就很痛苦。这时候需要全局状态管理。Vue3官方推荐的是Pinia相比Vuex更轻量、TypeScript支持更好、上手难度更低。创建项目时如果勾选了Piniasrc/stores/目录会自动生成。一个最小的Pinia store长这样import { ref, computed } from vue import { defineStore } from pinia export const useUserStore defineStore(user, () { const token ref() const userInfo ref({}) const isLogin computed(() !!token.value) const setToken (value) { token.value value } const setUserInfo (value) { userInfo.value value } return { token, userInfo, isLogin, setToken, setUserInfo } })在组件里使用script setup import { useUserStore } from /stores/user const userStore useUserStore() const login () { userStore.setToken(fake-token) } /scriptPinia把数据、计算属性和方法都集中在一个defineStore里可读性很高。只要数据跨多个组件使用就优先考虑放进Pinia而不是用事件链一层层传递。4.3 axios封装拦截器、错误处理、Token透传前端页面要请求后端接口最常用的HTTP库是axios。axios本身只是发请求的库但在真实项目中通常要封装一层统一处理三件套请求头、错误提示、Token失效。一个简单的axios封装思路import axios from axios import { message } from ant-design-vue const request axios.create({ baseURL: /api, timeout: 10000 }) // 请求拦截器 request.interceptors.request.use( (config) { const token localStorage.getItem(token) if (token) { config.headers.Authorization Bearer ${token} } return config }, (error) Promise.reject(error) ) // 响应拦截器 request.interceptors.response.use( (response) response.data, (error) { if (error.response?.status 401) { message.error(登录已过期请重新登录) window.location.href /login } else { message.error(error.message || 请求失败) } return Promise.reject(error) } ) export default request封装之后业务代码里请求接口只要写const res await request.get(/user/list)不需要每次都处理Token、错误提示这些重复逻辑。新手学到这里一定要理解封装的价值不是代码写得花哨而是把重复劳动集中起来让业务代码更清晰、更容易维护。5. UI库、样式踩坑和常用组件选型5.1 样式隔离和deep选择器Vue单文件组件里的style scoped会做样式隔离即给当前组件的元素添加一个data属性样式只对当前组件生效。这是好事能避免样式互相污染但也是新手容易踩坑的地方在父组件里想修改子组件内部的样式直接写CSS选择器选不中。解决办法是用:deep()style scoped :deep(.child-class) { color: red; } /style:deep()表示穿透作用域让样式可以作用到子组件的内部元素。这个技术在做后台管理系统时非常常用因为很多第三方组件库的样式需要自定义覆盖。另外要记住全局样式写在src/assets/main.css或App.vue的非scoped样式中不要把所有样式都放进scoped里硬调。5.2 Element Plus、Ant Design Vue、Vant怎么选做后台管理系统几乎不会从零写所有组件。Vue3生态里最常用的UI库有三个Element Plus桌面端后台管理首选组件全中文文档完善案例多遇到问题最容易搜到解决方案。Ant Design Vue蚂蚁金服设计规范风格偏企业级适合中大型系统。如果你熟悉React的Ant Design用这个会感觉风格非常统一。Vant移动端H5项目首选组件轻量适配手机端。初学者建议先学Element Plus因为它的模板案例最多中文资料也最丰富遇到不会用的组件搜一下大概率能找到答案。引入Element Plus只需两步npm install element-plus然后在src/main.js里注册import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vue const app createApp(App) app.use(ElementPlus) app.mount(#app)5.3 常用第三方组件富文本、日历、拖拽、地图UI库之外业务里经常会用到一些特定功能的第三方组件这里列几个常见方向需求常用方案备注富文本编辑器wangEditor、vue-quill-editor选Vue3兼容版本注意看版本号日期范围选择ant-calendar、Element Plus DatePicker优先用UI库内置组件拖拽排序、缩放vue-drag-resize、vuedraggable注意Vue3版本适配地图高德地图JS API、Vue3封装组件需要先申请Key导出Wordhtml-docx-js、docxtemplater看后端接口格式决定方案词云echarts-wordcloud基于ECharts扩展选第三方组件时最重要的不是看它功能多强而是看它是否支持Vue3。搜到组件后第一件事看npm文档里的版本说明和兼容性很多老组件是Vue2时代的直接安装到Vue3项目会报错或无法正常渲染。6. 5小时之后的进阶方向从能跑到能面试6.1 推荐练手项目和验收标准学完基础语法后如果不做项目很快会忘。推荐两个练手项目按能力选择第一个待办事项管理功能需求输入框添加待办事项列表展示待办事项点击事项切换已完成/未完成状态支持删除和筛选这个项目覆盖的知识点ref、v-model、v-for、v-if、click、计算属性。一天能写完就算入门成功。第二个后台管理系统功能需求登录页路由权限控制菜单栏和内容区布局一个用户列表页面支持增删改查一个统计页面展示图表覆盖的知识点Vue Router、Pinia、axios封装、Element Plus组件、动态路由、路由守卫。这也是最接近实际工作场景的练手项目。热搜词里出现过的“Vue3商城”“Vue3后台管理系统”都值得尝试。验收标准不是“代码能跑”而是刷新页面后登录状态是否保持未登录时访问其他页面是否被拦截接口返回错误时页面是否有提示列表数据删除后是否及时刷新标签页切换后状态是否保留6.2 vue2和vue3区别面试重点要会答如果你学习Vue3是为了找工作面试里几乎必问“Vue2和Vue3的区别”。这些点必须能说清楚响应式原理Vue2用Object.definePropertyVue3用Proxy。Proxy可以监听对象属性的新增和删除所以Vue3里不需要Vue2的Vue.set、Vue.delete这类特殊API。API风格Vue2选项式APIVue3组合式API。生命周期Vue2的beforeDestroy和destroyed改成了beforeUnmount和unmountedVue3新增了onMounted等组合式写法。性能Vue3引入虚拟DOM重写、静态标记、Tree-shaking打包体积更小运行更快。TypeScript支持Vue3原生支持TSVue2需要额外插件适配。碎片节点Vue3的组件模板可以写多个根节点Vue2必须要一个根节点。面试官通常还会追问“为什么Proxy比defineProperty好”这个要从监听能力上答defineProperty只能监听已有属性的读写新增和删除属性监听不到Proxy可以拦截整个对象的属性访问、赋值、删除、枚举等操作。6.3 后续学习路线响应式原理、虚拟DOM、工程化5小时学完能写页面后如果要继续深入可以从三个方向扩展方向一源码原理Vue3最核心的是响应式系统。建议去看vue/reactivity这个包理解ref、reactive、effect、track、trigger之间的关系。看源码时不要逐行读先画图理解数据变化如何触发视图更新。方向二工程化现在写Vue项目基本都会用Vite要理解Vite的开发服务器、模块热更新、构建流程。可以尝试手动配置vite.config.js设置路径别名、代理、打包优化。方向三TypeScriptVue3 TypeScript是当前前端招聘的主流要求。学会用defineProps、defineEmits的泛型写法理解Composition API和ts泛型如何配合。方向四全栈能力Vue3只是前端框架真实项目还要对接后端接口。至少要理解RESTful API设计、请求方法、状态码、鉴权流程。有条件的话学一下Node.js或Java后端的接口开发能把前后端链路打通才算真正具备独立开发能力。最后留一个我自己的经验总结Vue3入门最忌讳的是一口气把所有API学完再动手。正确节奏是“学会一个用一次跑通了再学下一个”。先跑通项目再看文档查漏补缺比什么都重要。
返回列表