持续创作,加速成长!这是我参与「掘金日新计划 · 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-if和v-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 节点,其他所有东西已自动销毁。
最简单的记忆方式就是看懂、记牢官网的图