Vue的基础认知

Vue的基础认知

什么是MVVM

全拼是Model-View-ViewModel。
ViewModel是view和Model的中间件,向上与view进行双向数据绑定,向下与model通过接口请求进行数据交互,承上启下。

Vue的生命周期

  1. 什么是生命周期
    vue实例有一个完整的生命周期,从开始创建、初始化数据、编译模板、挂载DOM,然后渲染->更新->渲染,最后卸载,这一系列过程称之为vue的生命周期。
    每个组件或实例都会经历一个完整的生命周期。
  2. 生命周期的作用
    生命周期中有多个事件钩子,让我们在控制整个 vue 实例的过程时更容易形成好的逻辑。
  3. 生命周期共有几个阶段
    共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/后。
    • 创建前beforeCreate:实例被创建后的第一个钩子,开始初始化事件和生命周期,但还没有data、methods、computed、watch属性;
    • 创建后created:完成数据挂载、事件绑定等
    • 载入前beforeMount:编译模板准备渲染,这个钩子是最后一次更改数据的机会;
    • 载入后mounted:将编译完成的模板挂载到页面中,真正的DOM挂载完毕,数据完成双向绑定。平时使用最多的函数,异步请求。在这个阶段,数据和DOM都已被渲染出来了;
    • 更新前beforeUpdate:响应式数据发生变化,更新data值,但还没更新到页面中;
    • 更新后updated:将data中的值更新到页面中;
    • 销毁前beforeDestroy:在销毁之前实例仍然可以使用,$destroy方法可以销毁当前组件,做一些善后工作;
    • 销毁后destroyed:销毁后解绑所有东西,移除事件监听,实例等。
  4. 页面第一次加载会触发哪些钩子?
    第一次加载会触发 beforeCreate、created、beforeMount、mounted。
  5. DOM渲染在哪个周期中已经完成
    DOM渲染在mountend
  6. 接口请求一般放在哪个生命周期中?
    mounted中,但注意服务器渲染时不支持mounted,需要放在created、beforeMounted中
  7. 具体讲述每个周期适合哪些场景:
    beforecreate : 可以在这加个loading事件,在加载实例时触发。
    created : 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用。
    mounted : 挂载元素,获取到DOM节点。
    updated : 如果对数据统一处理,在这里写上相应函数。
    beforeDestroy : 可以做一个确认停止事件的确认框 nextTick : 更新数据后立即操作dom。
  8. created 和 mounted 的区别:
    created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
    mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
  9. computed和watch的区别和运用场景
    computed是计算属性,依赖其他属性值,并且computed的值有缓存,只有它依赖的值发生变化时,下一次获取computed值才会重新计算该值。
    watch是监听,类似于某些数据的监听回调,每当监听的数据发生变化时都会执行回调进行后续操作。
    运用场景:
    1、在进行述职计算时,利用computed依赖其他数据的特性,避免获取值时都需要重新计算;
    2、在数据变化时执行异步,使用watch能得到最终结果。

Vue双向绑定原理

实现数据双向绑定主要是采用数据劫持结合发布者-订阅者的方式来实现的,监听器Observe劫持并监听所有属性,若有变动则通知订阅者,每个订阅者Watcher都绑定一个更新函数,接收到属性的变化通知并执行响应的属性,从而更新视图,再通过解析器Compile,扫描解析每个节点的相关指令(v-model、v-on等),最终watch搭建observer和compile之间的通信桥梁,达到数据变化、更新视图,视图交互变化、数据model变更双向绑定效果。

vue事件绑定原理

原生事件是通过addEventListener绑定真实元素,组件事件是通过vue自定义的on-click绑定的

虚拟DOM

  1. 简述虚拟DOM实现原理
    1、用JS模拟DOM树,并渲染;
    2、比较新老DOM树,记录两者的差异;
    3、最后把差异更新到真正的DOM树中。
  2. 虚拟DOM的优缺点
    优点:保证性能下限、无需手动操作DOM、跨平台。
    缺点:无法进行极致优化。

以上内容只用于对前端知识的总结,大部分内容为网络内容,仅用于借鉴参考,如有维权请留言。

猜你喜欢

转载自blog.csdn.net/Sandersonia/article/details/108223920
今日推荐