每日面试题 -- Vue 1

138 阅读3分钟

今儿个咱们聊的是Vue相关的面试题,要点如下:

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

Vue的生命周期及每个阶段的职责

Vue的生命周期,这事儿啊,说到底,就是Vue实例从创建到销毁的过程中经历的各个阶段。这些阶段,每个都有其特定的任务,咱们得好好搞清楚。

创建前后

首先是beforeCreatecreated。这俩阶段,主要是在实例化Vue的时候发生的。beforeCreate发生在响应式数据和事件都还没初始化之前,啥也干不了,就跟刚起床似的,啥也还没开始呢。接下来是created阶段,这时候响应式数据和事件都准备好了,可以开始搞一些数据初始化的操作。

挂载前后

然后是beforeMountmountedbeforeMount就是告诉你,模板和数据都准备好了,就差把它们塞到页面上了。mounted,这阶段就是真的把Vue实例显示到页面上了,可以进行一些DOM操作。

更新前后

beforeUpdateupdated,这俩是当Vue实例中的数据发生变化,需要重新渲染DOM时会用到。beforeUpdate是在数据变了,但DOM还没重新渲染之前,updated则是重新渲染并应用到DOM之后。

销毁前后

最后是beforeDestroydestroyedbeforeDestroy是在Vue实例销毁之前,这时候实例还完好,可以进行一些善后清理工作。destroyed,就是实例已经被销毁,监听器啥的都被移除了,基本上这实例就是个空壳了。

Vue响应式原理及Vue3的变化

Vue的响应式系统,核心就是让你的界面随着数据的变化自动更新。Vue2里用的是Object.defineProperty,给数据对象的每个属性加了getter和setter,当数据变化时能检测到,并通知视图更新。

但是,Object.defineProperty有个限制,新加的属性或删除的属性它是感知不到的。还有就是对数组的处理有限制,Vue2是通过改写数组操作方法来实现响应式的。

Vue3这边,整个响应式系统升级为Proxy。Proxy可以监听对象和数组的任何变化,包括属性的添加、删除等等。这让Vue3的响应式更加强大和灵活。

Vue3和Vue2的差别

Vue3和Vue2的差别,不仅仅是响应式系统。首先,Vue3引入了Composition API,这是一个可选的API,让你可以更灵活的组织你的代码,尤其是在处理复杂组件时。

其次,Vue3的性能更好。它引入了Fragment、Teleport、Suspense等新特性,还有更快的虚拟DOM算法和更小的体积。

最后,Vue3更注重类型支持,它是用TypeScript重写的,这对于喜欢使用TypeScript的开发者来说是个大福音。

启发和启示

对于开发者来说,弄懂这三个问题的意义重大。理解Vue的生命周期,能让我们更好地控制组件的行为和资源的

管理。搞清楚Vue的响应式原理,特别是Vue3的改进,有助于我们更高效地处理数据变化。而了解Vue3和Vue2的差别,则是跟上技术潮流、提升开发效率和项目质量的关键。

以上内容,希望能对各位有所帮助,别忘了,技术永无止境,持续学习才能不断进步。