Vue 理解和认识

Date:

啥是Vue, Vue的核心特性


目录

1. web开发历史发展

  • 纯静态页面

  • ASP,JSP,PHP等,服务端渲染

  • 前后端分离,Jquery + Ajax 异步请求,局部页面刷新,用户体验好

  • SPA 单页面应用,基于hash路由 / 基于history路由, 但各种VM绑定,数据管理麻烦

  • 各类SPA框架,如React,Vue,Angular等

2. Vue

  • Vue 是一个用户创建SPA应用的开源框架
  • 关注MVC中的View层,能够简化Web开发,方便地实现view和model的交互
  • 最早在2014年由尤雨溪发布,2016年发布2.0版本,2019年发布3.0版本,现在已经是3.5版本

3. Vue 核心特性

3.1 MVVM模式 / 声明式渲染

MVC?
MVC 是 Model-View-Controller 的缩写,是一种常见的(后端)软件架构模式,它将应用程序分为三个部分:

  • Model(模型):负责业务数据(如数据库模型、实体类等)
  • View(视图):负责界面展示(如 HTML、JSP 页面)
  • Controller(控制器):负责接收用户输入,调用 Model 更新数据,选择合适的 View 返回

在早期前后端一体的项目中(如 JSP + SpringMVC),Controller 接收请求,Model 处理数据,View 是服务端渲染出来的页面(如 JSP)。 而在前后端分离架构中,Controller 往往直接返回 JSON 数据,前端(Vue/React)再根据数据渲染 View。


MVVM?
MVVM 是 Model-View-ViewModel 的缩写,是前端常用的架构模式,尤其适用于 Vue 和 React 这类响应式框架。

  • Model(模型):保存业务数据(如组件中的 data
  • View(视图):界面层(DOM)
  • ViewModel(视图模型):Vue 的核心,负责连接 Model 和 View,实现数据双向绑定、状态同步、事件响应

📌 ViewModel 就是 Vue 的实例对象,它让:

  • 数据变化自动更新到 DOM(响应式绑定)
  • DOM 变化能自动反馈给数据(v-model 双向绑定)

MVVM 的核心优势就是: ✅ 解耦视图与数据
✅ 实现“声明式渲染
✅ 极大简化了前端开发者手动操作 DOM 的成本

3.2 响应式系统

响应式系统是实现MVVM模式的关键,它让数据的变化自动更新到DOM,DOM的变化能自动反馈给数据。

vue2中,响应式系统是基于Object.defineProperty实现的, data中的数据被劫持,当数据变化时,会通知视图更新。data computed watch

vue3中,响应式系统是基于Proxy实现的, 支持对象、数组、Map、Set 等复杂类型的响应式处理,性能更好。reactive ref computed watch

3.3 组件化开发

组件广义上来说是可复用的代码块,在Vue中,每个.vue文件就是一个组件,组件化有以下好处:

  • 调试方便,容易定位问题
  • 每个组件职责单一,方便维护
  • 提高开发效率,复用性高

3.4 模板语法和指令系统

模板语法主要是在template中,通过双花括号来绑定数据。

vue中,指令(Directives)是带有前缀v-的特殊属性:当属性值改变时,指令会自动更新DOM。

常用指令:

  • v-if
  • v-for
  • v-bind (:)
  • v-on (@)
  • v-model

4. Vue 和 React 对比

Vue 更适合“上手快 + 结构清晰 + 模板直观”的场景;React 更偏“灵活扩展 + 函数式思想 + 工程化”开发

维度VueReact
框架类型完整框架(渐进式)UI 库(核心关注视图层)
开发者尤雨溪主导,MIT 开源Facebook(Meta)主导,MIT 开源
学习曲线更容易快速构建应用更偏工程化,学习成本稍高
语法风格模板 + 指令JSX + JavaScript
组件书写SFC 单文件组件(.vueJSX 写法(.jsx / .tsx
响应式系统Vue3 使用 Proxy(自动追踪依赖)使用 useState/useEffect 手动控制更新
双向绑定支持 v-model不支持,需手动绑定 onChange/value
生命周期类似传统生命周期名,如 onMounted使用 Hooks(useEffect, useLayoutEffect
状态管理Vuex / PiniaRedux、Zustand 等多选项
路由管理官方 Vue RouterReact Router
服务端渲染(SSR)Vue SSR / NuxtReact SSR / Next.js

参考资料