Vue学习进阶之路:从入门到实战的心得与感悟​

Vue实战之入门基础 vue实战 1、Vue 引言 渐进式 JavaScript 框架 --摘自官网 2、Vue 入门 3、v-text 和 v-html 4、Vue 中事件绑定(v-on) 5、v-show v-if v-bind 6、v-for 的使用 7、v-model 双向绑定 8、事件修饰符 9、按键修饰符 10、Axios 基本使用 11、Vue 生命周期 12、Vue 中组件(component) 13、Vue 中路由(Vue Router) 14、Vue CLI 脚手架 15、在脚手架中使用 axios 阅读详情

作为一名从“前端小白”逐步进阶的开发者,近半年来我深耕Vue技术栈,从Vue3的基础语法到企业级项目的开发部署,从单一页面应用到简单全栈项目的实现,每一步探索都充满挑战却也收获满满。在这个过程中,我不仅突破了“会用”的初级阶段,更对Vue框架的设计思想、生态体系以及前端工程化有了系统性的认知。今天,我将结合近20个实战案例的开发经历,从学习方法论、核心技能拆解、生态技术拓展、项目实战复盘以及职业成长思考五个维度,展开撰写这份万字学习心得,希望能为正在Vue学习路上前行的伙伴们提供一份详实、可落地的参考指南。

一、系统化学习:告别碎片化,构建Vue知识体系

前端技术的学习最易陷入“碎片化陷阱”——今天看一个组件封装教程,明天学一个路由配置技巧,看似学了很多,却始终无法串联成完整的知识体系,遇到复杂项目时依旧无从下手。我在Vue学习初期就曾深受其害,花费了大量时间刷短视频教程,结果却连一个完整的TodoList都写得不规范。后来,我彻底调整学习策略,采用“系统化输入+阶段性输出”的模式,才真正实现了从“零散知识点”到“体系化能力”的跨越。

1. 基础阶段:精读文档+动手复现,吃透底层逻辑

Vue官方文档是学习Vue的“圣经”,尤其是Vue3的官方文档,不仅内容全面,还提供了交互式示例和详细的API说明。但很多初学者对文档存在误解,认为“文档太枯燥,不如视频教程直观”,实则不然。视频教程往往会省略很多底层逻辑和边界情况,而文档却能帮我们建立最权威、最完整的知识框架。我在基础学习阶段,制定了“两周精读计划”,每天花3-4小时逐字阅读Vue3官方文档,重点关注“核心概念”“API参考”和“迁移指南”三个模块,并且做到“每一个示例都动手复现,每一个API都亲自测试”。

以“响应式数据”这一核心概念为例,我没有停留在“ref和reactive可以实现数据响应式”的表面认知,而是通过三步深入拆解:第一步,复现文档中的基础示例,用ref定义基本类型数据,用reactive定义对象类型数据,观察数据变化时视图的更新效果;第二步,测试边界情况,比如给reactive定义的对象添加新属性是否能触发响应式、ref包裹的对象如何访问原始数据(通过.value属性)、解构reactive对象后数据是否还具有响应式等;第三步,探究底层原理,通过查阅Vue源码解析文章和官方文档的“深入响应式系统”章节,理解Proxy代理机制的工作流程——当我们用reactive创建响应式对象时,Vue会通过Proxy对对象进行包裹,拦截对象的get和set操作,在get时收集依赖,在set时触发依赖更新,从而实现“数据驱动视图”。为了巩固这一知识点,我还手动实现了一个简易版的响应式系统,虽然功能简陋,但让我对Proxy的使用和依赖收集的逻辑有了更深刻的理解。

对于Vue的基础指令,我专门建立了一个“指令实战手册”,针对每个指令的用法、适用场景、注意事项进行详细记录,并搭配多个实战案例。以v-for指令为例,我整理了以下核心知识点并逐一验证:

  • 基本用法:循环数组、循环对象(可获取key、value、index)、循环整数(生成指定次数的列表);

  • key属性的作用:通过对比不同数据的key值,让Vue更高效地更新DOM,避免重复渲染。我专门做了对比实验,在没有key和有key(使用唯一id作为key)的情况下,分别对列表进行添加、删除、排序操作,通过浏览器开发者工具观察DOM的更新情况,清晰地看到了key属性对渲染性能的优化效果;

  • 常见问题:使用index作为key可能导致的问题(当列表进行排序、删除等操作时,index会发生变化,导致Vue误判DOM元素,出现数据错乱)、v-for与v-if同时使用的优先级问题(v-for优先级高于v-if,会导致不必要的循环渲染,建议在父元素中使用v-if控制,或使用computed过滤数据后再循环)。

此外,对于Vue的生命周期、computed与watch的区别、methods的使用场景等易混淆知识点,我采用“对比分析+案例验证”的方式进行梳理。比如为了区分computed和watch,我设计了一个“购物车总价计算”的案例:用computed根据商品列表的数量和单价自动计算总价(依赖多个数据,需要缓存结果);用watch监听商品数量的变化,当数量超过10件时给出“库存不足”的提示(监听单个数据,执行异步操作)。通过实际代码的编写和运行,我清晰地掌握了两者的适用场景,避免了在项目中滥用的情况。

2. 进阶阶段:项目驱动+问题拆解,强化实战能力

基础知识点掌握后,必须通过实战项目进行巩固和深化,否则很容易出现“看得懂、写不出”的困境。我在进阶阶段采用“阶梯式项目实战”策略,从“单一功能小案例”到“多模块完整项目”,再到“企业级项目优化”,逐步提升自己的实战能力。每个项目完成后,我都会进行全面的复盘,总结遇到的问题、解决方案和可复用的经验,形成自己的“实战手册”。

第一阶段:单一功能小案例(5个)。这一阶段的目标是巩固基础知识点,培养“用Vue解决具体问题”的思维。我选择了5个经典的小案例:TodoList(待办事项管理,涵盖数据绑定、事件处理、列表渲染)、计数器进阶版(包含增减、重置、步进设置、数值范围限制等功能,练习computed和watch的使用)、表单验证系统(涵盖输入框、下拉框、单选框、复选框等多种表单元素,使用VeeValidate插件实现实时验证和错误提示)、图片轮播组件(练习组件封装、props传值、自定义事件)、 tabs切换组件(练习动态组件、路由基础)。每个案例我都会至少编写两个版本,一个版本使用Options API,一个版本使用Composition API,通过对比两种API的写法,深刻理解Composition API的优势——更好的代码组织、更灵活的逻辑复用、更清晰的类型推导。

以图片轮播组件的开发为例,我完整的开发流程如下:

  1. 需求分析:实现图片自动切换、手动点击切换、左右箭头切换、指示器切换、鼠标悬停暂停自动切换等功能;

  2. 组件设计:将轮播组件拆分为Carousel(父组件,负责整体逻辑)和CarouselItem(子组件,负责单个图片的渲染),通过props向子组件传递图片地址和描述信息,通过自定义事件实现子组件与父组件的通信;

  3. 核心逻辑实现:

    1. 自动切换:使用setInterval实现定时切换,记录当前索引,每次切换时索引加1,超出图片数量则重置为0;

    2. 手动切换:为指示器和左右箭头绑定点击事件,修改当前索引;

    3. 暂停与继续:在鼠标悬停时清除定时器,鼠标离开时重新创建定时器;

    4. 边界处理:当图片数量为1时,隐藏箭头和指示器,不执行自动切换。

  4. 优化改进:添加过渡动画(使用Vue的transition组件实现图片切换时的淡入淡出效果)、处理图片加载失败的情况(为img标签添加error事件,显示默认占位图)、支持自定义自动切换时间(通过props传递interval属性)。

在开发过程中,我遇到了“定时器泄漏”的问题——当组件销毁时,定时器没有被清除,导致页面中仍然存在定时器任务,影响性能。通过查阅文档和调试,我找到了解决方案:在组件的onUnmounted生命周期钩子中清除定时器。这个问题让我深刻认识到,在Vue开发中,必须关注组件的生命周期,及时清理资源,避免内存泄漏。

第二阶段:多模块完整项目(2个)。这一阶段的目标是掌握Vue生态的核心技术(Vue Router、Pinia、Axios),理解前端工程化的基本流程。我选择了两个具有代表性的项目:“基于Vue3+Vue Router+Pinia的个人博客系统”和“基于Vue3+Element Plus的后台管理系统”。这两个项目涵盖了路由管理、状态管理、数据请求、组件通信、权限控制、UI组件库使用等企业级开发的核心需求。

以个人博客系统的开发为例,项目的核心模块和技术实现如下:

(1)项目初始化与工程化配置

使用Vite初始化项目,相比Vue CLI,Vite的冷启动速度更快、热更新更及时,能大幅提升开发效率。项目结构规划如下:

使用Vite初始化项目,相比Vue CLI,Vite的冷启动速度更快、热更新更及时,能大幅提升开发效率。我按功能模块规划了清晰的项目结构,涵盖静态资源、公共组件、路由配置、状态管理、页面组件、接口请求、自定义Hook、工具函数、自定义指令等核心目录,确保代码组织规范,提升可维护性。

工程化配置重点:

  • Vite配置:在vite.config.js中配置别名(将@指向src目录,简化文件引入路径)、跨域代理(解决开发环境下的跨域问题)、CSS预处理器(使用Sass/Scss)、构建优化(压缩代码、拆分Chunk);

  • 代码规范:集成ESLint和Prettier,配置.eslintrc.js和.prettierrc文件,制定代码规范(如缩进为2个空格、语句末尾不加分号、单引号代替双引号等),并在package.json中添加lint脚本,实现代码自动检查和修复;

  • 类型推导:使用TypeScript约束数据类型,为Props、Pinia状态、接口返回数据等添加类型定义,减少类型错误,提升代码的可维护性。

(2)路由管理(Vue Router)

路由配置是单页应用的核心,我在项目中实现了以下功能:

  • 基础路由配置:定义首页、文章列表、文章详情等页面的路由规则,使用动态路由传递参数(如文章详情页的路由为“/article/:id”,通过id获取对应的文章信息);

  • 嵌套路由:在后台管理页面中使用嵌套路由,将页面划分为侧边栏(Sidebar)和主内容区(MainContent),侧边栏点击不同菜单时,主内容区渲染对应的子页面(如文章列表、文章编辑、分类管理等);

  • 路由懒加载:通过import()函数实现路由懒加载,将不同页面的组件拆分为独立的Chunk,只有当用户访问对应的路由时才加载对应的组件,减少初始加载资源体积,提升页面加载速度;

  • 路由守卫:使用全局前置守卫(router.beforeEach)实现登录权限控制——当用户访问需要登录的页面(如后台管理页面)时,判断用户是否已登录(通过Pinia中的userStore获取登录状态),如果未登录,则跳转到登录页面,并记录当前跳转地址,登录成功后返回该地址;使用组件内守卫(beforeRouteEnter、beforeRouteLeave)实现页面级别的权限控制和数据验证,比如在编辑文章页面,当用户未保存内容就离开时,给出提示信息,防止数据丢失。

路由配置核心实现思路:通过路由懒加载减少初始加载资源体积,利用嵌套路由实现后台管理页面的布局拆分,借助全局前置守卫实现登录权限控制,通过组件内守卫处理页面级别的数据验证与跳转拦截,确保路由管理安全且高效。

在路由配置中,我会明确区分公开页面与需登录页面,通过meta字段标记权限要求;对于文章详情等需要传递参数的页面,使用动态路由并开启props传递,让组件获取参数更直观。全局前置守卫会校验用户登录状态,未登录访问受保护页面时,自动跳转到登录页并记录跳转地址,方便登录后返回原页面。

(3)状态管理(Pinia)

Pinia是Vue官方推荐的状态管理库,相比Vuex,它的API更简洁、更符合Vue3的Composition API风格,并且支持TypeScript,无需手动编写类型声明。我在项目中按功能模块划分了三个Store:userStore(用户相关状态,如登录状态、用户信息)、articleStore(文章相关状态,如文章列表、文章详情、分类列表)、appStore(应用全局状态,如主题颜色、加载状态、通知消息)。

以userStore为例,核心实现思路:按功能模块划分Store,明确存储登录状态、用户信息、加载状态等核心数据;在actions中封装登录、获取用户信息、退出登录等异步操作,添加加载状态控制提升用户体验;通过状态持久化插件将关键状态存储到本地,避免页面刷新后状态丢失,同时注意敏感信息的安全存储。

在设计userStore时,我定义了清晰的用户信息类型,确保数据类型规范;登录操作中,先存储后端返回的token,再同步获取用户信息,最终更新登录状态;获取用户信息失败时,自动清除登录状态和token,保证状态一致性;退出登录时则全面清理相关状态和存储的token。

在使用Pinia的过程中,我重点关注了以下几个问题:

  • 状态持久化:由于Pinia中的状态存储在内存中,页面刷新后状态会丢失,因此需要实现状态持久化。我使用了pinia-plugin-persistedstate插件,通过简单的配置即可将状态持久化到localStorage或sessionStorage中。需要注意的是,对于敏感信息(如token),不建议直接存储在localStorage中,可考虑使用sessionStorage或加密存储;

  • 异步操作:Pinia的actions支持异步操作,无需像Vuex那样使用actions和mutations配合,简化了代码逻辑。在处理异步请求时,我会在actions中添加loading状态,用于控制页面的加载动画,提升用户体验;

  • 状态共享:在组件中使用Store时,直接通过useUserStore()等函数引入对应的Store实例即可,无需像Vuex那样通过mapState、mapActions等辅助函数,代码更简洁、直观。

(4)数据请求与接口封装(Axios)

在实际项目中,页面的数据大多需要从后端接口获取,因此Axios的封装是核心技能之一。我在项目中对Axios进行了多层封装,实现了“统一配置、统一拦截、统一错误处理、按模块划分接口”的功能,提高了代码的复用性和可维护性。

第一层封装:Axios全局配置。我创建了Axios实例,从环境变量中读取接口基础地址,设置合理的请求超时时间;通过请求拦截器统一添加token到请求头,实现身份认证;借助响应拦截器统一处理响应结果,对错误码进行分类处理,如401 token过期时自动清除登录状态并跳转登录页,同时给出友好的错误提示,提升用户体验。

全局配置中,我还统一处理了请求发送失败和服务器错误的提示,避免重复编码;通过拦截器实现了请求与响应的统一管控,减少了组件中重复的请求处理逻辑,提升了代码复用性。

第二层封装:按业务模块划分接口。我将接口按业务场景拆分,如文章相关、用户相关、分类相关等,每个模块下封装对应的增删改查操作;为接口请求添加清晰的类型约束,明确请求参数和返回数据的格式,减少类型错误;通过这种模块化封装,让接口管理更清晰,便于后续维护和迭代。

每个业务模块的接口函数都对应具体的后端接口,统一使用封装好的Axios实例发送请求,明确请求方式、请求地址和参数传递方式;通过类型定义约束参数和返回值,让接口调用更安全,同时提升代码的可读性。

第三层封装:自定义Hook(useRequest)。为简化组件中的请求逻辑,我封装了useRequest Hook,整合了加载状态管理、错误处理、数据缓存、刷新重试等核心功能;支持配置是否立即执行请求、是否开启缓存、重试次数等参数,适配不同的请求场景;同时在组件卸载时自动取消未完成的请求,避免内存泄漏。

useRequest Hook的核心价值在于标准化请求流程,组件中使用时只需传入接口函数和配置参数,即可获取请求数据、加载状态、错误信息以及执行请求、取消请求的方法;缓存功能可减少重复请求,提升性能;重试机制则提高了请求的稳定性,尤其适用于网络环境不稳定的场景。

在组件中使用useRequest时,只需引入对应的接口函数和Hook,配置相关参数即可快速实现数据请求;对于分页查询等需要手动触发的请求,可通过调用Hook返回的execute方法实现,参数传递直观,状态管理清晰,大幅简化了组件内的请求逻辑。

例如在文章列表页面,通过useRequest加载文章数据,开启缓存减少重复请求;分页切换时,调用execute方法传入新的分页参数即可触发重新请求,加载状态可直接用于控制表格的加载动画,让数据请求与展示的逻辑更简洁。

表格展示时,直接绑定请求返回的文章列表数据,根据加载状态显示加载提示;分页组件的页码切换事件绑定handlePageChange方法,在该方法中调用execute传入新页码参数,实现分页数据的动态加载,整个流程无需重复编写请求相关的状态管理代码。

(5)组件封装与通信

组件化是Vue开发的核心思想,合理的组件封装能够提高代码的复用性、可维护性和开发效率。我在项目中总结了组件封装的“三原则”:单一职责原则(一个组件只负责一个功能)、高内聚低耦合原则(组件内部逻辑紧密相关,组件之间依赖尽可能少)、可复用可配置原则(组件支持通过props自定义属性,适应不同的使用场景)。

以项目中的ArticleCard(文章卡片)组件为例,封装思路如下:

  • Props设计:定义title(文章标题)、summary(文章摘要)、createTime(发布时间)、author(作者)、category(分类)、tags(标签列表)、coverImage(封面图)等props,并添加类型约束和默认值;

  • 事件设计:定义click事件,当用户点击文章卡片时,触发该事件并传递文章id;

  • 插槽设计:为文章摘要和操作按钮预留插槽,支持自定义内容;

  • 样式设计:使用Scoped CSS避免样式污染,支持通过props传递自定义样式类。

ArticleCard组件的核心设计:通过清晰的props定义,接收文章相关的核心信息,如标题、摘要、发布时间等,并添加类型约束和默认值确保数据规范;设计click事件实现卡片点击跳转功能,传递文章id供父组件使用;预留摘要和操作按钮插槽,支持自定义内容,提升组件灵活性;使用Scoped CSS避免样式污染,同时支持自定义样式类,适配不同的使用场景。

组件内部通过props接收数据后,按固定结构渲染文章封面、标题、摘要、元信息和标签等内容;点击事件触发时,通过emit向父组件传递文章id,由父组件处理具体的跳转逻辑;插槽的设计让组件不仅能满足默认展示需求,还能根据不同页面的需求自定义摘要展示方式和操作按钮,增强了组件的复用性和灵活性。

在组件通信方面,我根据不同的场景选择合适的通信方式:

  • 父子组件通信:使用props(父传子)和自定义事件(子传父),这是最基础、最常用的通信方式;

  • 兄弟组件通信:通过Pinia状态管理,将需要共享的数据存储在Pinia中,兄弟组件通过引入同一个Store来实现数据共享和通信;

  • 跨层级组件通信:对于简单的跨层级通信,使用provide/inject API(父组件通过provide提供数据,子组件通过inject获取数据);对于复杂的跨层级通信,使用Pinia状态管理;

  • 无关联组件通信:使用事件总线(可通过创建一个Vue实例作为事件总线,或使用mitt库),但在大型项目中建议优先使用Pinia,避免事件总线导致的代码复杂度增加。

(6)权限控制

权限控制是后台管理系统的核心功能之一,我在项目中实现了“路由级权限控制”和“按钮级权限控制”两层权限控制机制:

  • 路由级权限控制:通过Vue Router的路由守卫实现,在全局前置守卫中判断用户是否有权限访问当前路由。用户登录后,后端会返回用户的角色信息和可访问的路由列表,前端根据返回的路由列表动态生成路由规则,避免用户访问无权限的路由;

  • 按钮级权限控制:封装一个自定义指令v-permission,根据用户的权限判断按钮是否显示。核心思路是:在自定义指令中获取用户的权限列表,对比当前按钮所需的权限,如果用户没有该权限,则隐藏按钮。

自定义指令v-permission的核心实现思路:在指令挂载时,获取用户的权限列表和当前按钮所需的权限;判断用户是否拥有该权限,若没有则隐藏按钮;对于管理员角色,默认赋予所有权限,无需逐一配置;通过这种方式,实现按钮级别的精准权限控制,确保不同角色只能看到自己有权限操作的按钮。

指令实现时,先从用户状态中获取当前用户的角色和权限列表,管理员角色直接拥有所有权限;对于普通用户,对比按钮所需权限与用户拥有的权限,不匹配时隐藏元素。这种实现方式无需在每个组件中重复编写权限判断逻辑,只需在按钮上添加指令并指定所需权限即可,简化了权限控制代码。

在组件中使用v-permission指令时,只需在按钮上添加该指令,并传入对应的权限标识,如添加文章对应“article:add”,删除文章对应“article:delete”;指令会自动根据用户权限判断按钮是否显示,实现权限控制的精准落地,同时让组件代码更简洁。

通过这种指令化的权限控制方式,不同角色登录后看到的操作按钮会自动适配其权限,无需在组件中编写复杂的条件判断;权限标识与后端保持一致,确保前后端权限控制逻辑统一,提升系统的安全性和可维护性。

(7)项目优化与上线部署

项目开发完成后,我进行了多方面的优化,以提升页面性能和用户体验:

1)性能优化
  • 资源优化:

    • 图片优化:使用WebP格式图片(比JPG、PNG格式更小),实现图片懒加载(使用vue-lazyload插件),根据设备尺寸加载不同分辨率的图片;

    • 代码分割:通过Vite的构建配置,将第三方库(如Vue、Vue Router、Pinia)和业务代码拆分为不同的Chunk,实现按需加载;

    • 压缩资源:开启Vite的代码压缩功能,压缩JS、CSS、HTML文件,减少资源体积。

  • 渲染优化:

    • 减少不必要的渲染:合理使用computed缓存计算结果,避免在模板中进行复杂的计算;使用v-once指令缓存静态内容,避免重复渲染;

    • 长列表优化:对于文章列表等长列表页面,使用虚拟列表(vue-virtual-scroller插件),只渲染当前视口内的列表项,减少DOM元素数量,提升渲染性能;

    • 异步组件:将非首屏组件(如后台管理页面的子组件)封装为异步组件,延迟加载,减少初始加载时间。

  • 请求优化:

    • 接口缓存:对于不常变化的数据(如分类列表、标签列表),使用sessionStorage或localStorage进行缓存,避免重复请求;

    • 请求合并:将多个独立的请求合并为一个请求,减少HTTP请求次数;

    • 预加载:对于用户可能会访问的页面(如首页的热门文章),使用link标签的preload或prefetch属性预加载资源。

2)用户体验优化
  • 加载状态反馈:在请求数据时显示加载动画(使用Element Plus的Loading组件),让用户知道页面正在处理;

  • 错误处理:页面出错时显示友好的错误页面,请求失败时给出明确的错误提示;

  • 响应式布局:使用Flex、Grid布局和媒体查询,适配不同尺寸的设备(电脑、平板、手机);

  • 动画效果:为页面切换、组件显示/隐藏等添加过渡动画,提升页面的流畅度;

  • 键盘导航:支持键盘方向键切换轮播图、Tab键切换表单元素等,提升可访问性。

3)上线部署

我选择了Netlify作为项目的部署平台,它支持GitHub仓库自动部署,操作简单、免费易用。部署流程如下:

  1. 在本地项目中执行npm run build命令,生成dist目录(打包后的静态资源);

  2. 将项目代码推送到GitHub仓库;

  3. 在Netlify中注册账号并关联GitHub仓库;

  4. 配置部署参数:构建命令为npm run build,输出目录为dist;

  5. Netlify会自动拉取代码并完成构建和部署,生成可访问的在线地址。

对于需要后端服务的项目,我还尝试了将前端静态资源部署到阿里云OSS,后端服务部署到阿里云ECS,实现了完整的全栈项目上线。部署过程中需要注意的问题:配置OSS的CORS规则(解决跨域问题)、配置ECS的安全组(开放对应的端口)、使用Nginx作为反向代理(处理前端路由和后端接口请求)。

3. 提升阶段:生态拓展+源码学习,深化技术认知

当能够熟练开发企业级Vue项目后,我开始向“深度”和“广度”两个方向拓展自己的技术能力。深度上,学习Vue的源码和底层原理;广度上,学习Vue生态的相关技术,如Nuxt.js、VueUse、Vue Test Utils等,同时了解前端全栈开发的相关知识。

(1)Vue源码学习

学习Vue源码不是为了成为Vue贡献者,而是为了更深入地理解Vue的设计思想和工作原理,当遇到复杂问题时能够更快地定位和解决。我从Vue3的核心模块入手,重点学习了“响应式系统”“虚拟DOM”“编译模块”三个核心部分。

在学习响应式系统源码时,我通过阅读Vue3的reactive、ref相关源码,理解了Proxy代理机制的具体实现——当我们用reactive创建响应式对象时,Vue会创建一个Proxy实例,拦截对象的get、set、deleteProperty等操作。在get操作时,会调用track函数收集依赖(将当前的effect函数添加到依赖集合中);在set操作时,会调用trigger函数触发依赖更新(执行依赖集合中的effect函数)。为了巩固这一知识点,我手动实现了一个简易版的响应式系统,包含reactive、ref、effect、track、trigger等核心函数。

学习虚拟DOM源码时,我了解到虚拟DOM是对真实DOM的抽象描述,它是一个JavaScript对象,包含tag、props、children等属性。Vue通过虚拟DOM计算出真实DOM的更新差异(diff算法),然后只更新需要变化的部分,从而提升渲染性能。我重点学习了Vue3的diff算法优化——相比Vue2的双端diff算法,Vue3的diff算法通过“最长递增子序列”优化了列表更新的性能,减少了DOM的移动操作。

(2)Vue生态技术拓展
  • Nuxt.js:Nuxt.js是基于Vue的服务端渲染(SSR)框架,它解决了Vue单页应用的SEO问题和首屏加载速度慢的问题。我学习了Nuxt.js的基本使用,开发了一个简单的博客项目,体验了服务端渲染的优势——首屏加载速度大幅提升,搜索引擎能够正确抓取页面内容。

  • VueUse:VueUse是一个基于Vue Composition API的实用工具集,包含了大量的常用功能,如useLocalStorage、useWindowScroll、useMouse、useRequest等。我在项目中引入了VueUse,使用useLocalStorage替代了手动操作localStorage的代码,使用useWindowScroll实现了滚动监听功能,大幅提升了开发效率。

  • Vue Test Utils:Vue Test Utils是Vue的官方测试工具库,用于对Vue组件进行单元测试和集成测试。我学习了Jest和Vue Test Utils的基本使用,为项目中的核心组件(如ArticleCard、Pagination)编写了单元测试,确保组件的功能正确性,减少后续迭代带来的bug。

  • Pinia高级用法:深入学习了Pinia的高级特性,如Pinia的插件开发、状态订阅、批量更新等,提升了状态管理的灵活性和可扩展性。

(3)前端全栈开发

为了提升自己的综合能力,我开始学习前端全栈开发,使用Node.js+Express搭建后端服务,实现了与Vue前端的对接。后端开发重点学习了以下内容:

  • 接口开发:使用Express搭建RESTful API,实现了文章的增删改查、用户登录注册、权限管理等接口;

  • 数据库操作:使用MongoDB作为数据库,学习了Mongoose的基本使用,实现了数据的增删改查、数据验证、关联查询等功能;

  • 身份认证:使用JWT(JSON Web Token)实现用户身份认证,生成token并返回给前端,前端将token存储在localStorage中,每次请求时添加到请求头中,后端验证token的有效性;

  • 部署上线:将后端服务部署到阿里云ECS,配置Nginx作为反向代理,实现了前后端项目的联动。

二、核心技能拆解:Vue建站全流程关键技术点

通过多个项目的实战,我总结出了Vue建站全流程的核心技能点,涵盖了从项目初始化到上线部署的每一个环节。这些技能点是企业前端开发中最常用的,也是Vue学习者必须掌握的核心内容。

1. 项目初始化与工程化

项目初始化是Vue建站的第一步,合理的工程化配置能够为后续开发奠定良好的基础。核心技能点包括:

  • 构建工具选择:Vue CLI和Vite的区别与选择,Vite的优势(快速冷启动、即时热更新、按需编译);

  • 项目结构规划:规范的目录结构设计,按功能模块划分目录,提高代码的可维护性;

  • 工程化工具配置:Vite配置(别名、跨域代理、CSS预处理器、构建优化)、ESLint和Prettier配置(代码规范检查与自动修复)、TypeScript配置(类型约束与推导);

  • 依赖管理:package.json的配置,依赖包的安装与更新,开发依赖与生产依赖的区分。

2. Vue3核心语法

Vue3是目前Vue的主流版本,其核心语法相比Vue2有了很大的变化,核心技能点包括:

  • Composition API:setup函数、ref和reactive、computed和watch、生命周期钩子(onMounted、onUnmounted等)、provide和inject;

  • Options API与Composition API的对比:Composition API的优势(更好的代码组织、更灵活的逻辑复用、更清晰的类型推导);

  • 响应式数据:ref(用于基本类型数据)、reactive(用于对象类型数据)

Vue - 快速入门,这一套就够了!(Vue core + 案例 + 效果演示) 前置条件:掌握 HTML、CSS、JavaScript、AJAX.工具:VsCode.插件:Live Server(浏览器实时预览)Ps:建议都提前下载下来,没网的时候也能用. 阅读详情

相关推荐

Vue从入门到精通:全方位掌握Vue.js开发技能

Vue.js(通常简称为 Vue)是一套构建用户界面的渐进式JavaScript框架。与其他重量级框架不同,Vue 采用了自底向上增量开发的设计。Vue 的核心库只关注视图层,非常容易学习,并且可以轻松与其他库或已有项目集成。Vue 允许开发者自定义指令,这些指令可以在模板中以v-自定义指令名的形式使用。el.focus();});在上面的例子中,我们创建了一个名为 focus 的自定义指令,当绑定的元素被插入到 DOM 中时,该指令会自动聚焦到该元素。

邓邓子的博客 9553

Vue自学指南

Vue自学指南 项目介绍 一套程序员工作必备的Vue超详细自学指南! 项目特点 项目代码结构清晰 ​ 代码注释友好 项目驱动方式 ​ 每个知识点学完都有对应的小项目巩固知识。 最后的商城大项目总结 ​ 详细目录 01-Vue初体验 02-插值操作 03-动态绑定属性 04-计算属性 05-事件监听 06-条件判断 07-循环 08-购物车案例 09-JavaScript高阶函数 10-表单绑定v-model 11-组件化开发 12-插槽slot 13-Webpack 14

weixin_44028058的博客 2228

vue 3.0 入门到进阶系列教程

vue 3.0 入门到进阶系列教程 实验介绍 从今年 2 月份开始,就是开始忙公司的项目,还记得 2 月份的时候,公司早早就开班工作了,每天居家工作,早上早早起来就是学习一个半小时,然后就开始工作,那段时间真的很压抑啊,每天那里也不能去,只能待在家里,只能晚上出去透透气。 在 2020 年 10 月 1 日,那天也是中秋节,也是国庆节,这是懂事以来第一次碰到的,合起来就是中国快乐的意思,这个意义特别重大,虽然今年由于疫情的影响,发生了很多事情,但是一切都是最好的安排,一切都是宝贵的经历吧。 如今糟糕的时间逐

人生代码 ---- 公众号 4421

Vue学习之路——从入门到入土(基本语法篇)

Vue 是一款渐进式的前端开发框架,可以极大的提高前端开发的效率,核心就是MVVM模式。Model(模型),可以理解为我们开发中后端代码的实体类,模型,不同的个人有不同的个命名方式,常见的有"Entity"、"domain"、"pojo"、"model"、"po"等;View(视图),可有理解为前端页面,即HTML文件,供用户浏览的页面,成为视图;ViewModel(视图模型),实现模型数据与视图数据的双向绑定,简单来说就是后台数据库数据发生变化时,会刷新作用到前台页面的展示;

m0_70325779的博客 4327

微信群消息监控系统实战:从零搭建Python自动化监控平台

本文详细介绍了如何从零搭建Python微信群消息监控系统,实现自动化监控和记录群消息。通过wxauto库模拟人工操作微信,结合MySQL数据库存储和智能去重策略,系统能高效处理大量消息并支持关键词监控。文章还分享了性能优化、安全合规等实战经验,帮助开发者快速构建高效稳定的监控平台。

weixin_29091105的博客 319

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1992

Vue 学习心得:从入门到实践的感悟与成长

在深入学习 Vue 框架的过程中,我经历了从最初的懵懂困惑到逐渐熟练掌握、进而能够灵活运用的转变,这一过程充满了挑战与惊喜,也让我收获了许多宝贵的经验与深刻的感悟。

2401_84976549的博客 1038

论文理解【LLM-OR】——【Step-Opt】Training LLMs for Optimization Modeling via Iterative Data Synthesis and

本文提出 Step-Opt-Instruct 方法,针对用 LLM 做 OR 问题求解任务,用迭代问题生成 + 分步验证机制实习更可靠的训练数据合成,从而微调开源 LLM 得到 Step-Opt。在多个 OR 建模基准提升性能,尤其在复杂问题上提升更明显

佚失的诗篇 803

探索 Vue.js:学习心得与实战之旅

整个项目开发过程,从前期规划组件架构、设计 Vuex 状态树,到中期用 Vue Router 串联页面、编写组件交互,再到后期优化性能、处理边界情况,Vue 生态各工具紧密协作,让复杂的 CMS 系统逐步成型,功能完备、用户体验佳,也让我真正领略 Vue 在企业级开发中的实战魅力,积累大量宝贵经验,从新手逐步成长为能独当一面应对复杂需求的前端开发者。如此一来,导航栏的样式、逻辑与页面主体分离,当多个页面需要相同导航栏时,复用组件避免重复代码,维护也只需聚焦单个组件,大大提升开发效率,降低出错概率。

krisz1的博客 1023

在LangChain中使用DashVector进行高效向量检索

DashVector为需要处理高维向量数据的开发者提供了一种便捷且高效的解决方案。通过将其集成到LangChain生态系统中,您可以轻松实现复杂的语义搜索和数据分析功能。DashVector官方文档LangChain GitHub仓库有关DashVector的详细notebook示例。

sjufgwgfhoia的博客 455

三极管自激升压电路设计 - 从参数计算到实践验证

本文详细解析了三极管自激升压电路(焦耳小偷电路)的设计原理与实践方法。通过剖析自激振荡机制与三极管电流关系,指导读者完成从核心参数计算、关键元件选型到面包板搭建调试的全过程。文章重点阐述了如何利用电感、三极管等基础元件实现低压直流到高压的转换,是理解开关电源与电磁能量转换的绝佳实践项目。

weixin_29250573的博客 366

Vue学习心得与总结

大二开课,跟老师学+自学,一开始看老师分享的培训课程深入学习,虽然知道学习内容且有计划,但总是学着学着就学不下去(课程冗长没有成就感,知识理论不太好接受,学的蛮难过的),最后,三天打鱼两天晒网。我认识到Vue不仅仅是一种框架,更是一种优秀的工具和理念,在我未来的开发中,我会继续深入学习和实践Vue.js,不断提升自己的能力。通过实际的开发经验,我学会了如何将Vue.js应用于真实的项目中,如何与后端API进行交互,获取和更新数据,以及如何处理用户输入和交互反馈,这些都是学习课程中不能替代的经验。

2201_75464762的博客 2959

如何用ISBN API快速获取图书信息?Python实战教程(附完整代码)

本文是一篇Python实战教程,详细介绍了如何利用ISBN API高效获取图书元数据。内容涵盖从API服务选择、密钥管理,到使用requests库构建健壮的请求模块,并利用Pydantic进行数据验证与解析。教程还提供了批量查询、缓存优化及集成到Flask Web应用等高级技巧,帮助开发者快速实现图书信息的自动化获取与处理。

p8q9r0的博客 455

深耕Vue.js:从入门到实战的全景式学习心得

在前端技术飞速迭代的浪潮中,Vue.js 凭借其简洁优雅的语法、灵活渐进的特性以及强大的生态体系,成为众多前端开发者的首选框架。从最初对前端开发的一知半解,到能够独立设计并实现中小型企业级应用,Vue.js 始终是我学习之路上的核心指引。这段跨越入门、进阶、深耕与实战的学习历程,不仅让我掌握了扎实的技术能力,更重塑了我对前端工程化、组件化以及用户体验设计的认知逻辑。

2503_92518864的博客 871

Figma 设计稿转前端代码:Cursor 实现 UI 还原的 4 种精准映射方法

揭示 Figma 设计稿转前端代码失效的根本原因在于四层语义未对齐(像素→布局、视觉→样式、交互→行为、意图→架构),提出以语义标注为核心的结构化喂数据方法,详解通过图层命名、Description 字段和 Markdown 上下文锚点实现高精度 React 组件生成,并给出可落地的避坑指南与实测提

weixin_42545292的博客 138

随机森林遥感反演详细教程

通过这篇文章,我们展示了如何使用Python对筛选后的影响因子进行随机森林建模,并应用于遥感数据反演森林生物量的任务。该流程不仅可以提高预测精度,还能有效处理大规模的遥感数据,为生态监测和森林管理提供重要支持。

热爱分享,热爱记录 2952

《Vue 实战:小型项目练手与感悟》

《Vue 实战:小型项目练手与感悟》

1156

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

从入门到实战:Vue网站开发学习心得

最近一段时间,我集中精力系统学习了Vue框架,并完成了几个小型网站的开发实战。从一开始对前端框架的懵懂,到逐渐能够独立搭建页面、实现交互功能,这个过程充满了挑战但也收获满满。今天就来梳理一下我的Vue学习方法和核心收获,希望能给正在学习Vue的小伙伴们一些参考。一、找对方法,高效开启Vue学习之路在学习Vue之前,我已经具备了HTML、CSS和基础JavaScript的知识,这为学习Vue奠定了良好的基础。

YY_banli的博客 639

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Vue网站开发学习心得

每次完成一个学习模块或项目后,我都会进行总结复盘。一方面,整理知识点笔记,梳理核心概念和常用方法,形成自己的知识手册,方便后续查阅;另一方面,反思学习过程中遇到的问题和不足,分析错误原因,避免再次犯错。同时,我还会关注Vue社区的最新动态,学习优秀的开源项目代码,借鉴他人的开发思路和最佳实践,不断提升自己的代码质量。

Huang___Yu的博客 974

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Vue.js学习心得:从入门到实践的进阶之路

本文分享了作者学习Vue.js的实践心得。重点介绍了"官方文档+案例实践"的学习方法,以及掌握响应式数据、组件化开发、路由管理、网络请求等核心技能的经验。文章通过代码示例展示了ElementUI组件使用、Axios封装、Pinia状态管理等技术要点,并分享了集成AI API的创新实践。作者认为Vue学习培养了工程化思维,提高了代码质量和问题解决能力。最后鼓励初学者坚持实践,循序渐进地掌握Vue技术栈。全文约150字,保留了核心的技术要点和学习建议。

2402_89707262的博客 479

Vue学习心得

在前端开发领域,Vue.js 作为一款轻量级且高效的前端框架,近年来受到越来越多开发者的青睐。Vue.js 通过其简单易懂的 API 和灵活的组件化思想,帮助开发者提高了开发效率,并且在实际项目中具有很好的表现。本文将分享我在学习 Vue.js 过程中的一些心得体会,介绍一些实用技能和代码示例。

qq2597731749的博客 663

标题:从入门到实战:Vue.js 网站开发学习心得与技能总结

本文分享了作者学习Vue.js框架开发个人博客网站的经验总结。文章介绍了三步学习方法:从官方文档入门做基础demo,到模块化练习核心知识点,最后通过完整项目实战巩固。重点阐述了Vue网站开发的四大核心技能:组件化开发、路由管理、前后端交互和项目部署。作者强调基础知识和实践的重要性,建议遇到问题要善于搜索解决,并保持坚持学习的态度。这篇经验分享为Vue初学者提供了实用的学习路径和方法参考。

2403_88947089的博客 882

从学习vue到uni-app的心得感悟

学习uni-app算是真正意义上的打开了我敲代码的大门,简单易懂,可以让人由浅入深,之前虽然学过web网页的一些框架,比如 element等,可能对于我这种新手来说理解还是有一些生涩,所以uni-app对于敲代码的新手来说,绝对绝对算是有一个非常友好的学习入门框架。开发所有前端应用的框架,它具有跨平台、高效率、丰富组件等特点,可以让你轻松地开发出一套代码,同时运行在多个平台上,包括。综上所述,uni-app是一个适合新手学习的前端框架,它可以让开发者快速上手,轻松实现多端适配,提高生产力和竞争力。

crazy_zyg的博客 1383

个人实际开发心得感悟及学习方法

个人开发心得

m0_54741495的博客 2863

从入门到实践:Vue开发网站的学习心得与技能沉淀

这段Vue学习之旅,让我深刻体会到“理论结合实践”的重要性。从最初的懵懂到现在能够独立开发网站,每一次进步都离不开不断的学习和调试。Vue框架简洁、高效、灵活的特点,让前端开发变得更加轻松有趣,也让我对前端开发有了更深入的理解。未来,我计划继续深入学习Vue 3的高级特性,比如Composition API的深入应用、自定义指令、插件开发等;同时学习Vue 3的配套工具,比如Vite(更快的构建工具)、Nuxt.js(服务端渲染框架),进一步提升自己的技术水平。

2402_89707444的博客 632

学习《vue.js前端框架技术》心得

Vue.js 的核心思想是组件化。组件是可复用的 Vue 实例,它有自己的 HTML 模板、JavaScript 逻辑和 CSS 样式(可以是内联的,也可以是外部引入的)。就像是搭积木一样,每个组件都是一块积木,你可以通过组合这些组件来构建复杂的用户界面。

hfchp的博客 810
上一篇: 快速搭建 SpringBoot 项目
下一篇: UniApp 快速上手实战教程
zero791111
博客等级 码龄2年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值