Vue面试深度解析:MVVM与生命周期

需积分: 1 0 下载量 171 浏览量 更新于2024-08-04 收藏 28KB MD 举报
"这篇文章主要汇总了Vue.js面试中常见的问题,包括MVVM模型的解释以及Vue的生命周期。MVVM是Model-View-ViewModel的缩写,它是MVC模型的改进版,强调数据驱动视图。Vue.js的生命周期分为8个主要阶段,在Vue3中增加3个用于特定场景的钩子,这些钩子在组件的不同状态中执行,帮助开发者管理组件的状态和行为。" 在MVVM模式中,Vue.js实现了数据和视图的双向绑定,使得当数据发生变化时,视图能够自动更新,反之亦然。`Model`层负责存储应用的数据,`View`层则展示用户界面,而`ViewModel`作为中间层,它连接`Model`和`View`,将数据转换为可显示的形式,并监听视图的变化以更新数据。在传统的MVC模式中,通常需要手动操作DOM来实现视图的更新,但在MVVM中,这一过程被自动化,提高了开发效率。 Vue.js的生命周期是理解组件工作方式的关键。Vue2和Vue3的生命周期略有不同,但主要可以分为以下几个阶段: 1. **创建阶段**: - `beforeCreate`:组件实例刚刚创建,数据观测(data observer)和事件处理器还未初始化。 - `created`:数据观测和属性已设置,但组件还未挂载到DOM。 2. **挂载阶段**: - `beforeMount`:在虚拟DOM被编译成真实DOM之前调用。 - `mounted`:组件已挂载到DOM,可以访问真实DOM元素进行操作。 3. **更新阶段**: - `beforeUpdate`:当数据变化时,在新旧虚拟DOM比较之前调用。 - `updated`:组件DOM已经更新,所有子组件也已完成更新。 4. **销毁阶段**: - `beforeDestroy`:组件实例被销毁前,可以清理定时器或解除监听。 - `destroyed`:组件已被销毁,不再触发任何生命周期钩子。 5. **Vue3新增的生命周期钩子**: - `onBeforeMount`、`onMounted`、`onBeforeUpdate`、`onUpdated`、`onBeforeUnmount`、`onUnmounted`分别对应Vue2中的`beforeMount`、`mounted`、`beforeUpdate`、`updated`、`beforeDestroy`和`destroyed`,但更符合函数式编程的风格。 - `onActivated` 和 `onDeactivated` 是Vue的`keep-alive`组件中使用的钩子,用于管理缓存组件的状态。 - `onErrorCaptured` 在Vue3中用于捕获子组件的错误。 掌握这些知识点对理解Vue.js的工作原理和高效开发至关重要。在面试中,面试者可能需要深入讨论这些概念,并能提供实际项目中的应用示例。