基于vue项目的代码优化

news/2024/4/30 2:27:49/文章来源:https://blog.csdn.net/weixin_44427784/article/details/128099536

前言

项目上线后其整体性能的优良是用户也是研发人员所关注的。项目优化非常重要,一丝一毫的提升都是对用户的负责。因此我们在开发中就应该注重细节,优化工作从日常开发做起。本篇文章就分享一些在日常开发中代码层面的优化手段。

开发常用优化手段

1、优先使用 v-if

v-if 和 v-show 都可以控制一个元素的显示与隐藏。区别是: v-if 是创建/销毁DOM来实现效果的;v-show 是通过 CSS 的 display 样式来操作的,会预渲染 DOM 。在开发中,除了需要预渲染或者需要频繁切换显示状态的情况,其他情况尽量使用v-if

2、v-for 和 v-if 不要一起使用

v-for 的优先级在 vue2 中比 v-if 高,所以在 vue2 项目中当两个指令出现在一个 DOM 上时,通过 v-for 渲染列表,每一次都需要进行一次 v-if 的判断。如果列表数据过多,就会造成一定的性能损耗。

解决方案:

① 如果是需要判断是否渲染这个列表,那么我们可以通过在循环外层包裹一层 template 来先进行判断。代码示例如下:

 

② 如果 v-if 是为了筛选需要遍历的数据,那么我们可以在计算属性中做筛选数据的逻辑,返回一个符合条件的列表数据,并在 DOM 中直接使用这个数据即可。代码示例如下:

3、长列表优化

在项目开发中,很多时候需要列表展示,其数据条数可达上千甚至上万条。

如果数据体量较大,一次性查询会特别慢,影响用户体验,目前的解决方案是分页查询,先查询近20条数据,同时监听滚动条的位置,当发现滚动条滚动到列表底部时继续请求后端接口获取下20条数据。

 

这种方案能够解决目前查询较慢的问题,但是还有优化的空间,随着不断滚动,数据会越来越多,大量DOM存在难免给客户端造成一定的压力,这时可以考虑虚拟列表的实现方案。

4、及时释放组件资源

及时释放不必要的资源也是一种常见的优化手段。我们在组件中使用定时器 setInterval 时,就会开辟一块资源空间给这个定时器使用,如果销毁组件时不手动释放掉这块空间,那么组件销毁后它们依旧会占用一部分资源。这就导致了没有必要的资源浪费,尤其是整个项目中存在多个这种现象时。所以当一个组件销毁后,尽量把我们开辟出来的资源块也销毁掉

 

5、图片懒加载

当页面中存在大量图片时,对图片的优化处理是刻不容缓的,这能大大提升用户体验。vue就有提供 vue-lazyload 插件供我们直接使用,用起来还是很方便的。

 

最后

性能优化手段颇多,可以借助工具,结合实际情况针对性优化。本文列举了几点在开发中的常用优化手段,供大家参考。作为开发人员,我们应该在日常项目中养成良好的编码习惯,高内聚低耦合,避免无用代码。这些比任何后期的工作都要来得实在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228019.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达摩院快速动作识别TPS ECCV论文深入解读

一、论文&代码 论文:https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136630615.pdf 模型&代码:ModelScope 魔搭社区 二、背景 高效的时空建模(Spatiotemporal modeling)是视频理解和动作识别的核心问题。相较于图像的Transforme…

开源共建 | TIS整合数据同步工具ChunJun,携手完善开源生态

TIS整合ChunJun实操 B站视频: https://www.bilibili.com/video/BV1QM411z7w5/?spm_id_from333.999.0.0 一、ChunJun 概述 ChunJun是一款易用、稳定、高效的批流统一的数据集成框架,可基于实时计算引擎Flink实现多种异构数据源之间的数据同步与计算&…

flink学习

Flink学习之路(一)Flink简介 - 走看看 Flink(一)-基本概念 - 知乎 Flink架构: Flink整个系统包含三个部分: 1、Client: 给用户提供向Flink系统提交用户任务(流式作业)的能力。用户提交一个F…

全球无人驾驶大洗牌,百度Apollo Day宣告Robotaxi进入2.0时代

作者 | 德新 编辑 | 王博1. 全球无人驾驶大洗牌,Robotaxi越发向头部聚集 全球无人驾驶落地正呈现两幅面孔。随着资本热潮褪去,一部分公司在资金和研发上已经难以为继,Robotaxi落地的资源和希望,正无限向头部公司聚集。 10月&#…

OVS DPDK VXLAN隧道处理

在学习OVS VXLAN实现之前,我们先回顾一下传统VTEP设备是如何处理VXLAN报文的。如下图所示: vxlan报文进入交换机端口后,根据报文头部信息进行vxlan隧道终结。隧道终结后,根据underlay信息进行overlay映射,得到overlay的…

鲲鹏devkit性能分析工具介绍(四)

鲲鹏devkit性能分析工具介绍(四) 前面我们已经介绍了鲲鹏devkit性能分析工具的全景分析、热点函数分析、进程/线程分析、微架构分析、和访存分析,由此可见进行性能调优绝对不能够仅仅去进行一方面的考察而是需要全方面的数据分析进行一定的舍…

8、多进程之间的通信

多进程之间的常用通信方法有两种,及Queue和Pipe 一、Queue Queue([maxsize]):创建共享的进程队列。maxsize是队列中允许的最大项数。如果省略此参数,则无大小限制。底层队列使用管道和锁定实现。另外,还需要运行支持线程以便队列中…

[附源码]计算机毕业设计springboot基于Web的软考题库平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[论文阅读] Curriculum Semi-supervised Segmentation

[论文地址] [代码] [MICCAI 19] Abstract 本研究调查了半监督CNN分割的课程式策略,它设计了一个回归网络来学习图像级信息,如目标区域的大小。这些回归被用来有效地规范分割网络,约束未标记图像的softmax预测,使其与推断的标签分…

16-JavaSE基础巩固项目:拼图小游戏

阶段项目-拼图小游戏 一、项目介绍 1、目的 锻炼逻辑思维能力,让我们知道前面学习的知识点在实际开发中的应用场景。 1、为了学习一个新知识:GUI GUI全称:Graphical User Interface(又称图形用户接口)是指采用图形化…

【Android进阶之旅】内存泄漏的危害有哪些?(案例分析)

随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂; 开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出 例如: 服务器应用软件&#x…

Redis 内存淘汰和过期删除策略

提起使用Redis的优点,大家可以列举出许多,比如:数据存储在内存,读写速度快,性能优异。比如数据持久化,便于数据备份及恢复等等。 分布式服务系统平台发展至今,Redis活跃在平台的各个领域&#…

RabbitMQ事务消息

通过对信道的设置实现 channel.txSelect();通知服务器开启事务模式;服务端会返回Tx.Select-Ok channel.basicPublish;发送消息,可以是多条,可以是消费消息提交ackchannel.txCommit() ;提交事务;…

mmdetection3d SUN RGB-D数据集预处理

SUN RGB-D是普林斯顿大学发布的一种关于室内场景理解的数据集,共包含了10335个样本,其中训练样本和验证测试样本数量分别为5285和5050。每个样本包含了彩色图像(RGB)和深度(D)信息,并且分别进行…

基于BDD的接口自动化框架开箱即用

1、背景说明 项目思想:BDD 行为驱动开发的思想褒贬不一,这里不多说。遵循的宗旨能解决业务痛点的思想就是好思想。 接口测试工具在实际的业务测试场景中往往会遇到一些使用上的局限性,自定义扩展要求技术较高,如果二次开发工具…

小程序瀑布流实现

什么是瀑布流布局 瀑布流布局,一般等宽,不等高的列表排列 原理是找出高度之和最小的那一列,在高度最小列继续添加元素 可以通过 absolute 定位实现,动态计算每一项的 top 和 left 封装瀑布流方法 function getAllRect(context…

[附源码]Python计算机毕业设计Django的疫苗接种管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

c#、wpf开发中页面在win10下被缩放125%引起页面错乱的解决办法。

正常情况下,我们开发的页面页面应该是100%缩放的,这样程序在win7和win10下保持一致,但是win10里面会根据显示器的情况自动调整“缩放与布局”,这使得桌面程序有时候会发生页面错乱,怎么调整就是个问题。 如图:在“缩放与布局”100%显示如下: 而在 “缩放与布局”125%显…

基于AD Event日志检测LSASS凭证窃取攻击

01、简介 简单介绍一下,LSASS(本地安全机构子系统服务)在本地或域中登录Windows时,用户生成的各种凭证将会存储在LSASS进程的内存中,以便用户不必每次访问系统时重新登录。 攻击者在获得起始攻击点后,需要获取目标主机上的相关凭证…

小程序中的confirm-type设置键盘的确认按钮

详情: confirm-type是很多小程序组件中的一种设置,用于改变输入键盘右下角的确认按钮。比如说,正常情况下,键盘上的默认提示可能是完成,但是你可以通过confirm-type将其设置为发送,搜索等,在特…