vue2?的双向数据绑定是利?ES5?的?个?API?,Object.definePropert()对数据进?劫持?结合?发布订阅模式的?式来实现的。
vue3?中使?了?es6?的?ProxyAPI?对数据代理,通过?reactive()?函数给每?个对象都包?层?Proxy,通过?Proxy?监听属性的变化,从??实现对数据的监控
Vue 2.0 的生命周期:
beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置 (event/watcher option) 之前被调用。
created:在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测(data observer)、属性和方法的运算、watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前尚不可用。
beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
mounted:实例挂载完成后调用,这时 el 被新创建的 vm.$el 替换了。
beforeUpdate:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。这里适合在更新之前访问现有DOM,如移除手动设置的class。
updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁后调用。
activated:在组件章节中深入讨论过,这里不做详细讲解。
deactivated:在组件章节中深入讨论过,这里不做详细讲解。
beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed:实例销毁后调用。这时候,绑定在实例上的全部指令、事件监听器都会被移除,所有子实例也会被销毁。
Vue 3.0 的生命周期:
onBeforeMount:在挂载之前被调用,与 Vue 2.0 中的 beforeMount 类似。
onMounted:在挂载之后被调用,与 Vue 2.0 中的 mounted 类似。
onBeforeUpdate:在更新之前被调用,与 Vue 2.0 中的 beforeUpdate 类似。
onUpdated:在更新之后被调用,与 Vue 2.0 中的 updated 类似。
onBeforeUnmount:在卸载之前被调用,与 Vue 2.0 中的 beforeDestroy 类似。
onUnmounted:在卸载之后被调用,与 Vue 2.0 中的 destroyed 类似。
可以看到,Vue 3.0 对生命周期进行了一些小的调整,并不影响使用,而且增加了一些新的钩子函数,极大的方便使用者进行开发和维护。