vue2项目中常用的两种数据懒加载方式

简介: 前端项目优化分为懒加载和预加载

一.什么是数据懒加载,为什么要用数据懒加载


前端项目优化分为懒加载和预加载

1.懒加载顾名思义就是延迟加载,项目中常见的就是图片懒加载比如滚动条触底加载,虚拟列表,包括我们经常用的延时器加载数据,大家面试经常被问到后端返回十万条数据前端怎么渲染?这也是懒加载的内容。

在项目中我们经常会遇到前后端通过websocket通信,数据会返回的很快,如果一下全部渲染出来必然会造成浏览器堵塞,前端页面卡顿,渲染不流畅等问题。这时候我们就用到了数据懒加载。

我们首页图片比较多的时候会用到图片懒加载和滚动条触底加载这两种方式。

2.预加载从字面意思就是提前缓存,到用的时候加载出来,预加载我们常用的方式就是把图片先下载到本地然后加载。

二.数据懒加载


1.滚动条触底加载(http)


getSoroll () {
            // 获取数据容器的dom
            const ldTable = this.$refs.ld;
            // 获取滚动条的dom 
            let ldDiv = ldTable.bodyWrapper
            let that = this;
            // 触底函数,关键代码
            ldDiv.addEventListener("scroll", function () {
                // 滚动条距离底部的距离 
                //ldDiv.scrollHeight 整个容器的高度 
                //ldDiv.scrollTop滚动条的高度 
                //ldDiv.clientHeight可视区的高度
                const scrollDistantance = ldDiv.scrollHeight - ldDiv.scrollTop - ldDiv.clientHeight;
                if (scrollDistantance <= 0) {
                    if (that.cullentPage < that.totalPage) {
                        that.cullentPage++
                        // 调接口返回数据
                    }
                }
            })
        }


2. 数据分割加载(websocket)


data () {
        return {
            timer:3000,
            websocketData:[],
            tableData:[],
        };
    },
    mounted () {
    },
    methods: {
        // 数据分割
        getSlice(){
            // websocketData就是websocket拿到的数据,tableData表格中要渲染的数据
            this.timer = setInterval(()=>{
                if(this.websocketData.length>100){
                    this.tableData.unshift(...this.websocketData.splice
                    (this.websocketData.length-(this.websocketData.length-100),(this.websocketData.length-100)));
                }else{
                    this.tableData.unshift(...this.websocketData);
                }
                if(this.tableData.length>100){
                    this.tableData.splice
                    (this.tableData.length-(this.tableData.length-100),(this.tableData.length-100));
                    console.log(this.websocketData);
                    console.log(this.tableData);
                }
                this.websocketData=[];
            },this.timer)
        }
    },

大家还有啥好的方法可以评论区留言

相关文章
|
2月前
|
JavaScript 数据可视化
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
这篇文章介绍了如何使用vue-cli 2和3版本来创建Vue项目,并详细说明了两者之间的主要区别。
98 5
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
|
2月前
|
JavaScript 容器
乾坤qiankun框架搭建 主应用为vue3的项目。
乾坤qiankun框架搭建 主应用为vue3的项目。
160 2
|
2月前
|
JavaScript
Vue CLi脚手架创建第一个VUE项目
Vue CLi脚手架创建第一个VUE项目
36 3
|
1月前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
18天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
2月前
|
JavaScript 数据可视化
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
这篇文章详细介绍了Vue CLI 3版本创建项目时的Runtime-Compiler和Runtime-only两种模式的区别、Vue程序的运行过程、render函数的使用、eslint的关闭方法,以及Vue CLI 2和3版本配置文件的不同和脚手架3版本创建项目的配置文件配置方法。
55 3
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
|
28天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
46 1
|
28天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
49 1
|
2月前
|
JavaScript
如何在 Vue 项目中选择合适的模块格式
【10月更文挑战第20天】选择合适的模块格式需要综合考虑多个因素,没有一种绝对正确的选择。需要根据项目的具体情况进行权衡和分析。在实际选择过程中,要保持灵活性,根据项目的发展和变化适时调整模块格式。
21 7
|
1月前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。