vue2的9种性能优化方式

总原则

  • 减少界面渲染的节点/组件数量,如果不能减少节点/组件数量,则考虑是否能够分批次渲染
  • 减少更新节点/组件的数量
  • 减少响应式变量的重复访问

零、不要过早优化

注意:一定要先实现目标业务或功能,后续再考虑优化问题,过早的考虑性能优化,很可能使你陷入进退两难的地步。优先实现业务功能才是第一要务。

一. 使用函数式组件

适用情况

纯显示组件

原理

函数组件相对于普通组件,内部没有响应式变量,没有生命周期钩子,因此初始化过程/更新过程相对于普通组件要简单/快很多

官网说明

函数式组件详细说明

实例与分析

二. 组件拆分

适用情况

大组件/大表单

原理

Vue的更新粒度为组件,将一个大组件或大表单拆分为多个小组件,数据更新时,只会涉及到对应的小组件,能够有效较少需要diff的vnode数量

实例与分析

三. 尽量适用普通变量而非响应式变量

适用情况

for循环

原理

vue默认会将data中定义的变量变为响应式变量,而获取和设置响应式变量的变量值时,会触发很多额外的操作(如:依赖收集和唤醒观察者),这些操作是需要耗费一定性能的,如果能避免,应该尽量避免

实例与分析

四. 适当考虑v-show替代v-if

适用情况

组件需要做显示/隐藏控制的时候

原理

v-if从显示到隐藏,是会将组件/节点完全删除的,从隐藏到显示组件/节点必须完整的经历一次创建过程,而v-show只是组件/节点的显示和隐藏,不必每次都执行组件/节点的完整创建过程

实例与分析

五. 使用KeepAlive

六. 使用Deferred延迟分批渲染

适用情况

大组件/大表单的渐进式渲染

原理

不是一次性就将整个组件/表单的内容全部渲染出来,而是每次渲染一部分,从而避免JS执行时间过长,导致的界面卡顿现象

实例与分析

七. 分批次提交

八. 使用非响应式数据

九. 使用虚拟滚动

相关文章与源码

主相关

拓展相关

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js是一个JavaScript框架,用于构建用户界面。在Vue.js项目中进行性能优化可以提升应用的响应速度和用户体验。以下是一些Vue.js项目性能优化的方法: 1. 首先,确保你的代码逻辑是正确的,并且实现了目标业务或功能。过早地进行性能优化可能会导致进退两难的情况。因此,优先实现业务功能才是第一要务。 2. 使用函数式组件。函数式组件是一无状态的组件,可以提高渲染性能。它们没有生命周期方法和响应式数据,只接受props并返回渲染的内容。如果你的组件只需要根据props渲染静态内容,可以考虑使用函数式组件来提高性能。 3. 避免一次性渲染整个组件或表单的内容。通过分批次渲染来避免长时间的JS执行,以避免界面卡顿现象。可以使用虚拟滚动来处理大量数据的渲染,只渲染当前可见的部分。 4. 分批次提交数据。如果需要向后端提交大量数据,可以将数据分批次提交,而不是一次性提交全部数据,以减少请求的大小,提高性能。 5. 使用非响应式数据。如果某些数据只需在特定情况下更新,而不需要触发重新渲染组件,可以将其定义为非响应式数据,以减少不必要的渲染开销。 6. 使用计算属性来优化v-for与v-if的同时使用的情况。在Vue2中,v-for的优先级比v-if高,这可能导致循环完再判断的问题。通过使用计算属性,在渲染之前对数据进行过滤,可以提高性能。 综上所述,通过遵循以上方法,可以有效地优化Vue.js项目的性能,提高应用的响应速度和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值