1. v-for与v-if哪个优先级更高?如果两个同时出现,应该怎么优化能得到更好的性能?
<p v-for="item in itmes" v-if="isTrue">{{item.title}}</p>
答案:
v-for优先于v-if被解析- 如果同时出现,每次渲染都会限制性循环再判断条件,无论如何循环都不可避免,浪费性能
- 要避免出现这种情况,需要在外层嵌套
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组件化的理解?
回答思路:组件化定义、优点、使用场景和注意事项等方面。强调组件化的一些特点。
- 组件是独立和可复用的代码组织单元。组件系统是vue核心特性之一,它使开发者使用小型、独立和通常可复用的组件构建大型应用。
- 组件化开发能大幅提高应用开发效率,测试性、复用性等;
- 组件按分类有:页面组件、业务组件、通用组件;
- vue组件是基于配置的,我们通常编写的组件是组件配置而非组件,框架后续会生成其构造函数,它们基于VueComponent,扩展于Vue;
- 常用技术:属性prop,自定义事件,插槽等;
- 组件应该是高内聚、低耦合的