vue常见面试题

107 阅读3分钟

1.v-show和v-if的区别

  1. v-show 是操作css样式现实的
  2. v-if是直接创建或销毁的过程

2.v-for中key的作用

v-for中key的唯一标识提高更新虚拟DOM不会重复行的刷新

3.vue中data为什么是function

组件实例化的时候这个函数会被调用,返回一个对象计算机会给这个对象分配一个内存地址你实例化几次,就分配几个内存地址,他们的地址都不一样,所以每个组件中的数据不会相互干扰,改变其中一个组件的状态,其它不变。

4.vue双向绑定的原理

双向绑定的原理也就是说是数据和视图同步,数据发生变化视图跟着变化,视图变化数据跟着随之变化

5.keep-alive的作用和被keep-alive声名的组件的生命周期

keep-alive是vue中的抽象的组件它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。在组件切换过程中 把切换出去的组件保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性。 被包含在 keep-alive 中创建的组件,会多出两个生命周期的钩子activated组件激活时使用,和deactivated组件离开时调用

6.说一下vue的生命周期,以及生命周期都做了什么事

  1. beforeCreate在 new 一个 vue 实例后,只有一些默认的生命周期钩子和默认事件,其他的东西都还没创建。
  2. created data 和 methods 都已经被初始化好了,如果要调用 methods 中的方法,或者操作 data 中的数据,最早可以在这个阶段中操作
  3. beforeMount在内存中已经编译好了模板了,但是还没有挂载到页面中,此时,页面还是旧的。
  4. mounted Vue 实例已经初始化完成了。此时组件脱离了创建阶段,进入到了运行阶段。如果我们想要通过插件操作页面上的 DOM 节点,最早可以在和这个阶段中进行
  5. beforeUpdate页面中的显示的数据还是旧的,data 中的数据是更新后的, 页面还没有和最新的数据保持同步。
  6. updated页面显示的数据和 data 中的数据已经保持同步了,都是最新的
  7. beforeDestroyVue 实例从运行阶段进入到了销毁阶段,这个时候上所有的 data 和 methods , 指令, 过滤器都是处于可用状态。还没有真正被销毁。
  8. destroyed这个时候上所有的 data 和 methods , 指令, 过滤器 都是处于不可用状态。组件已经被销毁了。

7.vue什么时候操作DOM比较合适操作时发现有的组件获取不到数据怎么办

在钩子函数 mounted 被调用前,Vue 已经将编译好的模板挂载到页面上,所以在 mounted 中可以访问操作 DOM 在获取页面元素的外层套上“this.$nextTick”即可获取到DOM元素

8.发送网络请求在那个函数中

axios.create

9.vue组件间传值有哪些方式

  1. 父向子传值使用props
  2. 子向父传值使用“$emit”
  3. 使用EventBus或Vuex进行兄弟传值
  4. 使用“provide/inject”或“attrs/attrs/listeners”方法进行跨级传值。

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

vue.ste()

11.讲述一下vuex

vuex 是 vue 框架中状态管理,Vuex 就是一个仓库,仓库里面放了很多对象。其中 state 就是数据源 存放地,对应于一般 Vue 对象里面的 data vuex中的有五中属性分别是 State、 Getter、Mutation 、Action、 Module