Vue的性能优化

Vue 是一套用于构建用户界面的渐进式的 JavaScript 框架。具有体积小,更高的运行效率,双向数据绑定,生态丰富、学习成本低等优点,所以 Vue 也被广泛用在移动端跨平台框架上。Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM,但是我们仍然需要去关注 Vue 在跨平台项目性能方面的优化,使项目具有更高效的性能、更好的用户体验。
Vue.js官网

1. v-for遍历必须为每个item添加key,并且避免在v-for中使用v-if

在列表数据进行遍历渲染时,需要为每一项 item 设置唯一 key 值,方便 Vue.js 内部机制精准找到该条列表数据。当 state 更新时,新的状态值和旧的状态值对比,较快地定位到 diff 。我们在使用的使用经常会使用 index(即数组的下标)来作为 key,但其实这是不推荐的一种使用方法,因为在当index改变时,Vue比对时会更新多余的数据,应该使用每个item唯一的key值。

v-for 遍历避免同时使用 v-if,v-for 比 v-if 优先级高,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候,必要情况下应该替换成 computed 属性。

2. 阻止数据劫持

Vue通过Object.defineProperty对data数据进行劫持,实现数据的双向响应。但有的场景需要我们的数据一旦获取后不做任何的改变,避免错误的刷新,此时可以通过
Object.freeze(obj)冻结对象,一旦“冻结”后的对象就再也不能修改了。冻结的对象是锁定下来的终极形式。一旦对象 被冻结,它就不能被解冻,也不能以任何方式被篡改。
Object.freeze() MDN Web Docs
在这里插入图片描述

3. Vue组件中的data返回一个函数而非是一个对象

如果data是一个对象,那么所有的实例就会共享该对象,无论在哪个组件实例中修改data,都会影响到所有的组件,如官网示例:
在这里插入图片描述

4. 并不需要将所有的数据都放在data中

因为data中的数据Vue会增加getter和setter,并且收集watcher,占了内存。不需要响应式的数据可以定义在实例之上。

<template>
	<ul>
		<li v-for="(item,index) in myArr" :key="index">
			my list{{item}}
		</li>
	</ul>
</template>
// *** ignore ***
data(){
	return {
		myArr:[1,2,3,4]
		}
}
// 优化为
created(){
	this.myArr=[1,2,3,4]
	}

5. v-for元素通过事件代理绑定到父元素上

不需要说明

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只月月鸟呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值