Vue
Vue
一个用于创建用户界面的开源JS框架,也是一个创建单页应用的web应用框架。
他的核心特性与技术原理如下:
- 响应式数据驱动视图(MVVM)
数据劫持:通过劫持数据对象的getter/setter(vue2)或proxy对象代理(vue3),收集依赖,并在数据变化时触发依赖更新。
依赖收集与触发更新:在组件渲染或计算属性执行时,会“记录”当前使用的数据(创建Watcher实例),数据变化时通知所有相关Watcher重新执行(如重新渲染组件或更新计算属性)。
双向绑定的实现:通过v-model指令,在表单元素(如input)上绑定数据,将输入事件(如input)与数据更新关联,实现“数据→视图”和“视图→数据”的双向同步。
注意点:Vue2对对象新增属性、数组索引修改的响应式支持有限(需通过Vue.set或this.$set解决);Vue3基于Proxy的响应式系统解决了这一问题,并支持更细粒度的依赖跟踪。 - 组件化开发(模块化与复用):通过单文件组件(SFC)将模板、逻辑和样式封装为独立单元
- 虚拟DOM与性能优化:通过虚拟dom实现高效DOM更新
渲染阶段:将组件模板转换为虚拟DOM(JS对象),通过Diff算法比较新旧虚拟DOM的差异
更新阶段:仅将差异部分应用到真实DOM,减少不必要的重排/重绘。
vue3对虚拟DOM的优化:
静态标记:标记动态节点(绑定了变量的文本、属性),Diff时仅扫描动态节点。
Fragments:支持组件返回多个根节点(无需额外包裹div),减少DOM层级。
==事件缓存(Event Cache)==:缓存高频事件处理函数,避免重复创建
4. 模板语法:声明式模板,通过类似于原生H5的语法描述UI结构,框架会自动处理DOM更新。
指令(Directives):v-if(条件渲染)、v-for(列表渲染)、v-bind(属性绑定)、v-model(双向绑定)、v-on(事件绑定)、v-show(显示隐藏)等,扩展HTML的能力。
计算属性(Computed):基于响应式数据缓存计算结果,仅当依赖变化时重新计算(适合需要缓存的复杂逻辑,如拼接姓名、过滤列表)。
侦听器(Watch):监听数据变化并执行副作用(如异步请求、复杂对象属性监控),适合需要“响应后执行操作”的场景。
模板引用(Ref):通过ref获取DOM元素或子组件的实例,直接操作原生DOM或调用子组件方法(补充声明式模板的灵活性)。
他的生态体系完善覆盖全开发流程
路由管理:Vue Router,支持动态路由、嵌套路由、导航守卫等。
状态管理:Vuex(基于模块化状态树)、Pinia(更简洁的API,支持TypeScript,无mutation)。
构建工具:Vite(新一代构建工具,基于ES模块,开发环境秒启动,生产环境高效打包)、Vue CLI(基于Webpack,适合传统项目)。
UI框架:Element UI(PC端)、Vant(移动端)、Naive UI(现代风格)等,降低界面开发成本。
类型支持:Vue3全面支持TypeScript,通过defineComponent、ref/reactive的类型推断,提升代码健壮性。
vue3的关键更新
组合式API(Composition API):替代选项式API(Options API),通过setup函数或<\script setup>语法糖,将逻辑按功能聚合(而非按选项拆分),提升代码可读性和复用性(逻辑抽取更方便)。
TypeScript原生支持:Vue3核心代码用TS重写,组件定义、类型推断更友好(如defineProps自动推导类型)。
更小的体积与更快的运行:通过Tree-shaking优化,核心库体积更小;响应式系统基于Proxy,性能更优。
自定义渲染器(Renderer):支持扩展渲染目标(如SSR、Canvas、WebGL),扩展了Vue的应用场景(如游戏、可视化)。