1、v-show和v-if的区别
2、为何在v-for中显示key
diff算法中会通过tag和key来判断是不是sanmeNode(相同的节点),从而减少渲染次数,提升性能
3、vue组件生命周期(父子组件)
4、vue组件的常见通讯方式
5、vue组件的渲染和更新方式
6、computed有何特点
缓存,data不变不会重新计算(提升性能)
7、为何data必须是一个函数
如果data不是一个函数,那么组件调用多次的时候,data的指向是同一个地址
8、如何将组件的所有属性传给子组件
$props
<MyCompontents v-bind="$props"/>
//自组件$attr获取
9、如何自己实现v-model
//VModelComponents
<input :value="text" @input="$emit('change',$event.target.value)">
<script>
export default {
model:{
prop:'text',
event:'change'
},
props:['text']
}
<script/>
//调用
<VModelComponents v-model="xxx" @change="xxx"/>
10、多个组件有相同逻辑怎么抽离
mixin (缺点是变量不易查找、容易同名覆盖、多对多关系时会很乱)
11、何时需要使用beforeDestory
1:解绑自定义事件(event.$off)2:清除定时器 3:解绑自定义dom事件
12、什么是作用域插槽
// slot
a={msg:'hello'}
<slot :slotData="a"/>
//使用
<template v-slot="slotProps">
{{slotProps.msg}}
<template/>
13、action和mutation有何区别
action可以处理异步,mutation做原子操作,action可以整合多个mutation
14、vue-router常用路由模式
hash History(需要服务端支持)
15、坚挺data变化的核心API是什么
Object.defineProperty
16、vue如何监听数组变化
Object.defineProperty不能监听数组变化 (重新定义原型,充血push pop等方法,实现监听)Proxy可以监听数组变化
17、响应式原理
18、简述diff算法过程
19、vue为何是异步渲染 ,$nextTick有何用
异步渲染(以及合并data修改),可以提高渲染性能
20、vue常见性能优化
1、合理使用v-show v-if, 2、合理使用computed,3、循环的时候加key 4、自定义事件,自定义dom事件及时销毁 5、合理使用异步组件 6、合理使用keep-alive 7、data层级不要太深 8、图片懒加载