热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vuelazyrender:耽误衬着大组件,加强页面切换流通度

近来用element来做项目,在开辟的过程当中,倏忽发明页面的操纵和切换在数据量大的时刻相称卡,厥后提了个issue,在furybean解答后才晓得,我每一个单元格都加了toolt

近来用element来做项目,在开辟的过程当中,倏忽发明页面的操纵和切换在数据量大的时刻相称卡,厥后提了个issue,在furybean解答后才晓得,我每一个单元格都加了tooltip,会生成大批的节点,形成页面操纵卡顿。厥后将tooltip去掉,操纵流通多了。

然则,因为我是将页面的数据存在vuex中的,在路由切换返来的时刻,发明在数据量大的时刻,页面衬着得很慢,也许两三秒才切换过来,用户体验相称不好。

这时候,我就在想,能不能让页面切换完成以后才最先衬着数据量大的组件,用户最少不会感知到路由切换的卡顿状况。

一最先不晓得如何做,厥后看到这篇blog:vue 机能优化,作者基于vue1.0做了一个指令,基础原理是应用v-if来掌握组件的衬着机遇。作者在回复中提到vue2.0能够用组件来做,详细的议论能够看这里

基于此,我做了个组件vue-lazy-render,迎接star。

基础功能

  • 耽误加载组件

  • 掌握耽误加载的时候

  • 能够监控数组的变化和设定数据量来决议是不是开启耽误加载

基础用法

默许




trackByData




源码诠释

template



{{tip}}


props

propertydescriptiontypedefaultrequired
time多长时候后最先衬着组件Number10false
immediately是不是立时开启耽误衬着,vue-lazy-render组件会在路由切换时,会举行一次耽误衬着,假如在同一个路由中需常常对某个组件举行耽误衬着,能够将immediately由false设为true,就会立时开启一次耽误衬着Boolean—false
data假如须要耽误加载的组件是由数组衬着的,能够将数据的数据prop进vue-lazy-render组件,组件会依据设置监测数组变化,决议开启耽误加载的机遇array—false
trackByData是不是依据data的变化来开启耽误加载,假如设为true,需将data prop进来,而且路由切换时不会再举行耽误衬着Boolean—false
limit在数据凌驾若干后才开启耽误衬着,须要data和将trackByData设为trueNumber30false
maskClass守候衬着时的遮罩层款式String—false
tip守候衬着时的提醒笔墨String正在衬着,请稍候false

methods

/**
* 耽误衬着数据,在数据衬着完成后触发loaded事宜
*/
showLazy() {
if ((this.data && this.data.length > this.limit) || !this.data) { // 假如数据存在而且数据的数目比限制的数目大,则开启耽误衬着 假如不是列表挪用组件,也开启耽误衬着
this.syncLoader()
} else { // 其他状况,不开启耽误衬着
this.show = true
this.$emit('loaded')
}
},
/**
* 耽误衬着
*/
syncLoader() {
this.show = false
setTimeout(() => {
this.show = true
this.$emit('loaded')
},this.time)
}

定义的要领很简单,在data定义的show初始值为false,在须要耽误加载时,会用一个setTimeout来将show设为true,当show变成true时,组件才能够衬着,从而到达耽误衬着的目标。组件最先衬着时,会触发loaded事宜。

挪用

created() {
this.showLazy()
},
watch: {
data() { // 数据变化时从新衬着
if (this.trackByData) {
this.showLazy()
}
},
// 路由变化,从新衬着
$route() {
if (!this.trackByData) {
this.showLazy()
}
},
// 立时从新变成true时,从新衬着
immediately() {
if (this.immediately) {
this.showLazy()
}
},
},

  • 在页面进入时,开启

  • 假如不是track-by-data形式,则每次路由切换时,开启

  • 假如是track-by-data形式,则数组变化时,开启。因为我的页面中,有些表格是在弹层中展现的,同一个组件,能够每次翻开弹层时,数据都不一样,一最先盘算用这类要领来完成耽误的,厥后加了immediately,觉得这个track-by-data形式完整没有意义了,用了反应会形成不必要的从新衬着。

  • 当immediately由false变成true时,开启

末了,一切文章都邑同步发送到微信民众号上,迎接关注,迎接提意见:

《vue-lazy-render: 耽误衬着大组件,加强页面切换流通度》


推荐阅读
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • 如何使用 `org.eclipse.rdf4j.query.impl.MapBindingSet.getValue()` 方法及其代码示例详解 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 基于 Vue 和 Element UI 实现的简洁登录界面设计
    本文介绍了一种利用 Vue.js 和 Element UI 框架构建的简洁登录界面设计。该设计不仅注重用户体验,还确保了界面的美观性和易用性。通过合理的布局和组件配置,实现了高效、响应式的登录功能,适用于多种前端应用场景。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
author-avatar
忽然想起你_静_970
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有