面试之Vue

79 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

请你说一下Vue的特性?

简答: Vue有两大特点:数据驱动视图双向数据绑定

数据驱动视图

  • 数据的变化会驱动视图自动更新
  • 好处:程序员只管把数据维护好,那么页面结构会被 vue 自动渲染出来!

双向数据绑定

举一个简单的栗子:

在网页中,form 表单负责采集数据,Ajax 负责提交数据

  • js 数据的变化,会被自动渲染到页面上
  • 页面上表单采集的数据发生变化的时候,会被 vue 自动获取到,并更新到 js 数据中

注意: 数据驱动视图和双向数据绑定的底层原理是 MVVM(Mode 数据源、View 视图、ViewModel 就是 vue 的实例)

vue数据双向绑定的基本原理是什么?

这个时候可千万注意,不能回答MVVM,准确的说,MVVM它是一种模型,这个问题真正要考你的是vue如何做到将数据绑到视图view和数据data。

正确的回答是:vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,相当于给属性或者data设置了set、get函数,只要数据一发生变化,就会触发函数

vue的条件渲染指令有哪些,有什么区别?

vue的条件渲染指令有v-ifv-show

v-if 的原理是:每次动态创建或移除元素(通过操作 DOM ),实现元素的显示和隐藏。如果刚进入页面的时候,某些元素默认不需要被展示,而且后期这个元素很可能也不需要被展示出来,此时 v-if 性能更好

v-show 的原理是:动态为元素添加或移除 display: none 样式,来实现元素的显示和隐藏。如果要频繁的切换元素的显示状态,用 v-show 性能会更好

注意: 在实际开发中,绝大多数情况,不用考虑性能问题,可以直接使用 v-if

说说Vue的生命周期

(这里以Vue2为例)

生命周期就是vue从开始创建销毁的过程,分为四大步:

  • 创建: beforeCreate、created

    beforeCreate前,也就是 new Vue 的时候会初始化事件和生命周期

    beforeCreate 和 created 之间会挂载 Data,绑定事件;接下来会根据 el 挂载页面元素,如果没有设置 el 则生命周期结束,直到手动挂载;el 挂载结束后,根据 templete/outerHTML(el) 渲染页面

  • 挂载: beforeMount、mounted

    在 beforeMount 前虚拟 DOM 已经创建完成;之后在 mounted 前,将 vm.$el 替换掉页面元素 el;mounted 将虚拟 dom挂载到真实页面 此时页面已经全部渲染完成

  • 更新: beforeUpdate、updated

    发生数据变化时触发 beforeUpdate 和 updated 进行一些操作

  • 销毁: beforeDestroy、destroyed

    最后主动调用销毁函数或者组件自动销毁时 beforeDestroy,手动撤销监听事件,计时器等;destroyed 仅存在 Dom 节点,其他所有东西已自动销毁。

最简单的记忆方式就是看懂、记牢官网的图

image.png