成都网站建设设计

将想法与焦点和您一起共享

vue中如何实现长列表性能优化

这篇文章主要介绍vue中如何实现长列表性能优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了广安免费建站欢迎大家使用!

长列表性能优化

1. 不做响应式

比如会员列表、商品列表之类的,只是纯粹的数据展示,不会有任何动态改变的场景下,就不需要对数据做响应化处理,可以大大提升渲染速度

比如使用 Object.freeze() 冻结一个对象,MDN的描述是 该方法冻结的对象不能被修改;即不能向这个对象添加新属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值,以及该对象的原型也不能被修改

export default {
 data: () => ({
   userList: []
}),
 async created() {
   const users = await axios.get("/api/users");
   this.userList = Object.freeze(users);
}
};

Vue2 的响应式源码地址:src/core/observer/index.js - 144行 是这样的

export function defineReactive (...){
   const property = Object.getOwnPropertyDescriptor(obj, key)
   if (property && property.configurable === false) {
       return
  }
   ...
}

可以看到一开始就判断 configurable 为 false 的直接返回不做响应式处理

configurable 为 false 表示这个属性是不能被修改的,而冻结的对象的 configurable 就是为 false

vue中如何实现长列表性能优化

Vue3 里则是添加了响应式flag,用于标记目标对象类型

2. 虚拟滚动

如果是大数据很长的列表,全部渲染的话一次性创建太多 DOM 就会非常卡,这时就可以用虚拟滚动,只渲染少部分(含可视区域)区域的内容,然后滚动的时候,不断替换可视区域的内容,模拟出滚动的效果


 
   
 

原理是监听滚动事件,动态更新需要显示的 DOM,并计算出在视图中的位移,这也意味着在滚动过程需要实时计算,有一定成本,所以如果数据量不是很大的情况下,用普通的滚动就行

以上是“vue中如何实现长列表性能优化”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


本文标题:vue中如何实现长列表性能优化
网站URL:http://chengdu.cdxwcx.cn/article/pohdod.html