2021-12-25 面试题:vue(二) v-for使用key的原因,组件渲染更新过程,MVVM的理解,组件和封装组件的意义,ajax放在哪个生命周期,$nextTick作用,vue常见性能优化方式

本文探讨了Vue.js中v-for使用key的原因,组件渲染和更新的流程,MVVM的概念,组件化的重要性,ajax请求的最佳时机,$nextTick的作用,以及一系列Vue性能优化策略,包括v-if/v-show的使用,计算属性,v-for的key,事件处理,异步组件,keep-alive,数据结构优化等。

1.为什么v-for要使用key?

快速查找到节点,减少渲染次数,提高渲染性能

2.描述组件渲染和更新的过程

vue组件初次渲染过程:

解析模板为render函数,
监听data属性的getter和setter,
执行render函数,生成vnode,patch(ele,vnode):

vue组件更新过程:

修改data,触发setter(此前在getter中已被更新),
重新执行render函数,生成newVnode,patch(ele,newVnode)
3.对MVVM的理解

M:Model,V:View,VM:ViewModel,
Vue中的DOM通过监听事件,操作Vue中的data,
Vue中的data通过指令操作DOM,
这就是所说的数据驱动视图

4.什么是组件?为什么要封装组件?

组件就相当于库,把一些能在项目里或者不同项目里可以复用的代码进行需求性的封装。
页面上可以复用的都可以成为组件,它是html,css,js的聚合体,
封装组件的目的主要是为了解耦,提高代码的复用率

5.ajax请求应该放在哪个生命周期里?

ajax放在mounted中,因为js是单线程而ajax是异步操作

6.vue为何是异步渲染,$nextTick何用?

因为如果不采用异步更新,那么每次更新数据都会对当前组件进行重新渲染,
因此Vue会在本轮数据更新之后,再去异步更新视图

$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,
在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM
一般在mounted中使用$nextTick

7.vue常见性能优化方式?

1.合理使用v-if和v-show,
2.合理使用computed,
3.v-for加key,
4.自定义事件,dom事件及时销毁,
5.合理使用异步组件,
6.合理使用keepalive,
7.data层级不要太深,
8.使用vue-loader在开发环境做模板编译,
9.前端通用性能优化(如图片懒加载/减少 HTTP请求数/合理设置 HTTP缓存/资源合并与压缩/合并 CSS图片/将 CSS放在 head中/避免重复的资源请求/切分到多个域名),
10.使用ssr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值