每日面试题 -- Vue 18

87 阅读3分钟

各位看官老爷们,今天咱们得聊聊三个Vue面试里老常见的问题。👇首先,排在咱们面前的问题有:

  1. Vue的生命周期有哪些及每个生命周期做了什么?
  2. Vue响应式原理是什么?Vue3的响应式有何不同?
  3. Vue3和Vue2的区别?

作为一位资深的Vue开发者和爱好者,今天就用最简单的方式给你细细道来。🍵

Vue的生命周期及其作用

Vue实例从创建到销毁的过程,经历了一系列的生命周期钩子函数,这些函数允许用户在特定时期添加自己的代码逻辑。🚀

首先,是beforeCreatecreated,这俩阶段,实例刚刚开始创建,beforeCreate是数据观测和初始化事件之前,created则是完成这些工作之后。想要初始化数据,或者是发起Ajax请求,这时候做刚刚好。

接着,beforeMountmounted,在这两个阶段,Vue把模板编译成HTML。beforeMount发生在编译之前,mounted则是编译之后,DOM已经挂载到页面上了。如果想操作DOM,mounted是个不错的选择。

beforeUpdateupdated,当组件的数据变化,需要重新渲染DOM时,会经过这俩阶段。beforeUpdate可以做一些数据变化前的工作,而updated可以处理数据变化后的DOM更新。

最后是beforeDestroydestroyed,在组件销毁的阶段。beforeDestroy是销毁前,这时候实例仍然完全可用,destroyed则是销毁后,可以在这里清理定时器或解绑全局事件监听器。

Vue响应式原理及Vue3的改进

Vue的响应式系统基于Object.defineProperty(),通过getter和setter来实现的。当一个Vue实例的数据对象被观测时,Vue会遍历该对象的所有属性,转换成getter/setter,并收集依赖,以便在属性被修改时通知变化。

Vue3则引入了Proxy,代替了Object.defineProperty,能够监听对象内部的变化,包括属性的添加和删除,甚至是数组索引和长度的变化,从而实现了更为强大和灵活的响应式系统。

Vue3与Vue2的区别

Vue3带来了Composition API,提供了一个更加灵活和组织化的方式来组织组件的逻辑。同时,Vue3的性能也得到了显著提升,包括更小的打包大小、更快的虚拟DOM重写和更新过程、以及更有效的组件初始化。

另外,Vue3支持TypeScript,为开发者提供了更好的类型推断和高级功能,使得代码更加健壯。

启发和启示

深入理解Vue的生命周期、响应式原理以及Vue3与Vue2之间的差异,对于开发高质量的Vue应用至关重要。🌟这些知识不仅帮助我们优化组件的性能,更能够在合适的生命周期钩子中执行合适的逻辑,保证代码的可维护性和扩展性。同时,对Vue3的新特性有了更深入的理解后,能够更好地利用这些特性来构建现代化的Web应用,提高开发效率和用户体验。记住,每一点进步都源于对基础的扎实和对新知的探索。🚀