- 谈谈你对回流重绘的理解,如何解决提升性能:
回流/重排:页面布局流发生改变就叫做回流,例如:width、height、border、top等
重绘:重绘元素自身的样式发生改变但是不会影响布局流,例如:color、background、box-shadow等
- 写出11个生命周期 和作用:
beforeCreate
beforeMount
beforeUpdate
beforeDestroy
created 请求接口 this.$nextTick(() => { DOM操作 })
mounted 请求接口、DOM操作 echarts、swiper等等
updated 模型数据变化进一步重置图表,例如聊天窗口到底部、echarts等
destroyed 清除非vue资源,写定时器切换组件了要记得清除。
- 说出created、mounted区别:
created模型初始化了,但是虚拟DOM没有
mounted当前组件已经挂在到页面,子组件不好说可以通过this.$nextTick来确保
- created默认不能操作DOM、但是我就要操作怎么确保能操作成功:
this.$nextTick(() => {})
- 谈谈你对$nextTick的理解
- vue中用来确保DOM渲染完毕之后的一个API - 避免出现无法获取DOM
- 案例: 对话框dialog 显示扫码登录、操作子组件场景等等
- 谈谈你对keep-alive的理解
- 作用:缓存组件 避免组件切换的时候创建销毁频繁触发created、destroyed钩子函数
- 谈谈keep-alive的LRU缓存淘汰策略:
:max="6" - 作用:仅缓存6个组件的数据 - 策略:LRU 最近最少使用就 放第7个就把最近最少使用的搞走
include
- 字符串或正则表达式。只有名称匹配的组件会被缓存。
exclude
- 字符串或正则表达式。任何名称匹配的组件都不会被缓存。
max
- 数字。最多可以缓存多少组件实例。
- 谈谈keep-alive既要缓存又想添加时候获取最新数据如何解决:
- 回答:使用缓存生命周期 actived deactived