Vue面试题

118 阅读2分钟

1. v-forv-if哪个优先级更高?如果两个同时出现,应该怎么优化能得到更好的性能?

<p v-for="item in itmes" v-if="isTrue">{{item.title}}</p>

答案:

  1. v-for优先于v-if被解析
  2. 如果同时出现,每次渲染都会限制性循环再判断条件,无论如何循环都不可避免,浪费性能
  3. 要避免出现这种情况,需要在外层嵌套template,先v-if判断,然后在内部进行v-for循环
<template v-if="isTrue">
    <p v-for="item in itmes">{{item.title}}</p>
</template>

2. 组件中的data为什么需要写成函数的形式?

答案:函数每次执行都会返回全新的data对象实例。
Vue组件可能存在多个实例,如果使用对象形式定义data,则会导致它们工用一个data对象,那么状态变更将会影响所有组件实例,这是不合理的。而在Vue根实例创建过程中不存在该限制,是因为根实例只能有一个。

3. key的作用和工作原理?说说对它的理解。

答案:key的作用是为了高效的更新虚拟DOM。原理我暂时不清楚。(待修改)

4. 对vue组件化的理解?

回答思路:组件化定义、优点、使用场景和注意事项等方面。强调组件化的一些特点。

  1. 组件是独立和可复用的代码组织单元。组件系统是vue核心特性之一,它使开发者使用小型、独立和通常可复用的组件构建大型应用。
  2. 组件化开发能大幅提高应用开发效率,测试性、复用性等;
  3. 组件按分类有:页面组件、业务组件、通用组件;
  4. vue组件是基于配置的,我们通常编写的组件是组件配置而非组件,框架后续会生成其构造函数,它们基于VueComponent,扩展于Vue;
  5. 常用技术:属性prop,自定义事件,插槽等;
  6. 组件应该是高内聚、低耦合的

待更新。。。