Vue前端面试题汇总

67 阅读3分钟

vue

vue3.0比vue2.0好在哪里

1、更小 引入tree-shaking,可以将无用模块“剪辑”,仅打包需要的,使打包的整体体积变小了; 2、更友好 vue3在兼顾vue2的options API的同时还推出了composition API,大大增加了代码的逻辑组织和代码复用能力; 3.proxy替换了之前的defineProperty

vue3创建组件的方式

- 用函数调用的方式创建组件

利用h函数和render函数 通过h函数创建message组件的虚拟节点 通过render函数将虚拟节点渲染成真实节点

v-if和v-show区别以及使用场景

v-if通过控制虚拟dom树上的结点,来联动控制真实dom上的结点,从而控制元素的显示和隐藏 v-show是通过css中的dispaly:none来控制元素的显示与隐藏,产生回流与重绘 1、控制页面显隐方式不同。

v-if是通过控制dom节点是否存在来控制页面是否显示。
v-show则是节点已经存在,通过dom节点的display样式来控制显隐。display none为不显示 block为显示。 v-if 产生回流 2、编译过程不同。 v-if切换有局部编译和卸载的过程。切换过程中会适当的销毁和重构内部的事件监听和子组件。 v-show切换只是简单的基于css切换。

3、编译条件不同。

v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译。 v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留。

4、性能消耗不同。

v-if有更高的切换消耗; v-show有更高的初始渲染消耗 使用场景

基于以上区别,因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

vue生命周期

vue2.0

beforeCreate阶段:vue实例的挂载元素el和数据对象data都是undefined,还没有初始化。

created阶段:vue实例的数据对象data有了,可以访问里面的数据和方法,未挂载到DOM,el还没有

beforeMount阶段:vue实例的el和data都初始化了,但是挂载之前为虚拟的dom节点

mounted阶段:vue实例挂载到真实DOM上,就可以通过DOM获取DOM节点

beforeUpdate阶段:响应式数据更新时调用,发生在虚拟DOM打补丁之前,适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器

updated阶段:虚拟DOM重新渲染和打补丁之后调用,组成新的DOM已经更新,避免在这个钩子函数中操作数据,防止死循环

beforeDestroy阶段:实例销毁前调用,实例还可以用,this能获取到实例,常用于销毁定时器,解绑事件

destroyed阶段:实例销毁后调用,调用后所有事件监听器会被移除,所有的子实例都会被销毁

vue3.0

1 .Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但有有两个被更名:

beforeDestroy改名为beforeUnmount destroyed改名为unmounted 2.Vue3.0也提供了Composition API形式的生命周期钩子,与Vue2.x中钩子对应关系如下:

beforeCreate ===>setup() created =======>setup() beforeMount ===> onBeforeMount mounted=======> onMounted beforeUpdate ===> onBeforeUpdate updated =======> onUpdated beforeUnmount ==>onBeforeUnmount unmounted=====> onUnmounted

聊聊对vue的理解

vue是一个渐进式的JS框架。他易用,灵活,高效; 可以把一个页面分隔成多个组件;当其他页面有类似功能时,直接让封装的组件进行复用; 他是构建用户界面的声明式框架,只关心图层;不关心具体是如何实现的