vue面试

103 阅读5分钟

1,Vue是什么?

Vue是一个渐进式的框架,它是非常高效、易用和灵活的,而且还便捷于开发人员与项目或第三方库进行整合

2.vue中data为什么必须要是一个函数

1.没一个组件都是一个独立的个体,都是一个vue的实例对象,每一个组件中的data数据都是独立的。 2.如果组件共享data属性,当data的值是同一个引用类型的值的时候,改变其中一个会影响其他所有。 3组件中的data写成一个函数,数据会以函数返回值的形式定义,这样每重复利用一次组件,组件就会返回一份新的data,类似于给每个组件实例创建一个私有的数据空间,让组件各自维护自己的数据,如果单纯的写成对象形式,就使得所有组件实例共用了一份data,就会造成一个data变化所有的data全部变化的结果。

3.V-ifh和v-show的区别

在vue中有两种渲染方式,即是v-ifv-show,两种不同的渲染方式也有着不同的喧渲染方式。

v-if

我们首先来说说v-if,v-if的特点。 1.真条件渲染,只要满足条件即可进行渲染(你需要什么它就给你什么) 2.开销大,占用资源比较多, 3,适合低频操作(少量操作) 4,节省内存(v-if是直接讲元素进行删除所以会节省内存) 5可以用else进行直接处理,(注意v-if必须和v-esle进行配合使用)

v-show

那么v-show的特点有那些呢?1.首先v-show的渲染是假条件渲染(如果符合条件就一次性返回所有的值),2.耗费的资源比较小 3.适合高频操作(大量操作)4.比较耗费内存(因为v-show是将元素隐藏起来而并非删除,所以会消耗内存)5.v-show不可以处理esle

4. v-for中key的作用是什么呢?

因为我们在使用v-for渲染列表数据的适合,一般来说数据量都很庞大,而且我们经常要对这个数据进行一些增删改查的操作,假设我们给列表增加一条数据,那么整个列表都需要重新渲染一边,那么对整个页面的消耗就会增加,会浪费很多不必要的资源.所以我们不去操作真是Dom,vue给我们提供了一套虚拟dom,我们只需要操作数据就可以对页面进行改变。key的主要原理就是vue中的Diff算法 vue使用了一套虚拟dom,是我们可以不用直接操作dom元素,只操作数据就可以重新渲染页面,这就用到了Diff算法。key虚拟DOM对象的表示当数据发生变化时。Vue会根据新数据或者新的虚拟DoM,随后vue进行新旧Dom的比较。从而对页面进行改变(简单来说就是提升v-for的性能)

5.vue中v-model双向绑定原理

双向绑定是通过数据劫持来进行 Vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持

各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

6.vue中的生命周期

  1. 我们首先了解一下什么是生命周期,当一个组件从创建到销毁的过程就是生命周期
  2. vue的生命周期又有八个不同的钩子函数,钩子函数是vue框架内置的函数,它可以随着组件的生命周期阶段自动执行。
  3. 钩子函数分为4大阶段八个方法,四个阶段分别是1.初始化阶段 2.挂载阶段 3.更新阶段 4.销毁阶段
  4. 每个阶段又分为执行前执行后
阶段方法名方法名
初始化beforeCreatecreated
挂载beforeMountmounted
更新beforeUpdateupdated
销毁beforeDestroy destroyed

7.keep-alive的作用和keep-alive声明的组件的生命周期是什么?

  1. 1.我们首先说一说keep-alive的作用是什么,keep-alive 可以将被包裹的组件暂时存放在内存中,当我们的页面进行切换的时候,组件不会被重复的销毁和创建,从而提高整体的性能,不会造成资源的浪费,同时也可以保存当前组件的一些状态.
  2. 2.keep-alive的组件生命周期有那些,我们为了缓存不活动的组件实例能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。我们使用的 激活/停用****activated\deactivated

8.发送网络请求的函数是什么?

我们在Vue中发送网络请求的参数是使用Vue中提供的网络发起工具axios

9.Vue中组件传值有那些方式?

  • 在了解组件传值之前,我们首先了解组件之间有几种方式需要传值。1.父向子传值。2.子向父传值。3.兄弟传值
  1. 父向子传值,父组件内首先需要声明需要传递的数据,在父组件中引用的子组件上绑定一个自定义属性并且把数据绑定在自定义属性上,在子组件中添加参数props接收并且使用即可 (注意子组件必须使用props属性接收数据)
  2. 子向父传值,子组件必须通过vue中提供的实例方法$emit进行触发并且可以携带参数,父组件监听使用

**@(v-on)**进行监听,然后进行数据接收处理

  1. 兄弟传值,1.我们需要使用一个new vue实例来进行储存兄弟之间的数据,我们使用 new vue eventBus。2.我们在组件中 的 created中监听方法eventBus.(′自定义事件名′,methods中的方法名称)。4.在另外一个兄弟组件中的menthods中写函数,在函数使用eventBus的方法eventBus.('自定义事件名',methods中的方法名称) 。4.在另外一个兄弟组件中的menthods中写函数,在函数使用eventBus的方法eventBus.(′自定义事件名′,methods中的方法名称)。4.在另外一个兄弟组件中的menthods中写函数,在函数使用eventBus的方法eventBus.emit('自定义事件抿成')。5.在组件的tmplate中绑定事件.

10,vue中改变数组内索引的值,数据不更新,如何处理

使用this.$forceUpdate()方法(强制刷新)