1.vue的虚拟dom?
虚拟的DOM的核心思想是:对复杂的文档DOM结构,提供一种方便的工具,进行最小化地DOM操作。
2.如何理解vue中MVVM模式?
MVVM全称是Model-View-ViewModel;vue是以数据为驱动的,一旦创建dom和数据就保持同步,每当数据发生变化时,dom也会变化。DOMListeners和DataBindings是实现双向绑定的关键。DOMListeners监听页面所有View层DOM元素的变化,当发生变化,Model层的数据随之变化;DataBindings监听Model层的数据,当数据发生变化,View层的DOM元素随之变化。
3.vue中
把切换出去的组件保留在缓存中,可以保留组件的状态或者避免重新渲染。
4.vue生命周期的理解?
(1)什么是vue生命周期: Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。
(2)vue生命周期的作用: 它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。
(3)vue生命周期总共有几个阶段: 总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后。
(4)第一次页面加载会触发哪几个钩子: 第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子。
(5)DOM 渲染在哪个周期中就已经完成: DOM 渲染在 mounted 中就已经完成了。
总共分为8个阶段:
beforeCreate----创建前
组件实例更被创建,组件属性计算之前,数据对象data都为undefined,未初始化。
created----创建后
组件实例创建完成,属性已经绑定,数据对象data已存在,但dom未生成,$el未存在
beforeMount---挂载前
vue实例的$el和data都已初始化,挂载之前为虚拟的dom节点,data.message未替换
mounted-----挂载后
vue实例挂载完成,data.message成功渲染。
beforeUpdate----更新前
当data变化时,会触发beforeUpdate方法
updated----更新后
当data变化时,会触发updated方法
beforeDestory---销毁前
组件销毁之前调用
destoryed---销毁后
组件销毁之后调用,对data的改变不会再触发周期函数,vue实例已解除事件监听和dom绑定,但dom结构依然存在
5.组件之间的传值通信?
父组件向子组件传值:
1)子组件在props中创建一个属性,用来接收父组件传过来的值;
2)在父组件中注册子组件;
3)在子组件标签中添加子组件props中创建的属性;
4)把需要传给子组件的值赋给该属性
子组件向父组件传值:
1)子组件中需要以某种方式(如点击事件)的方法来触发一个自定义的事件;
2)将需要传的值作为$emit的第二个参数,该值将作为实参传给响应事件的方法;
3)在父组件中注册子组件并在子组件标签上绑定自定义事件的监听。
6.vue的优点是什么?
低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
可重用性:你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
7.v-show和v-if指令的共同点和不同点
v-show指令是通过修改元素的display的CSS属性让其显示或者隐藏
v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果
8.如何让CSS只在当前组件中起作用
将当前组件的