在前端开发中,什么样的代码会导致性能很低?

这篇具有很好参考价值的文章主要介绍了在前端开发中,什么样的代码会导致性能很低?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从前端来看页面的卡顿是最为影响用户体验的,而好的代码是保证页面平稳高性能运行的基石,前端页面卡顿的原因有很多,可以从渲染机制和运行分成两大类:

(1)渲染不及时,页面掉帧

(2)网页内存占用过高,运行卡顿

两大类又细分为:

渲染不及时,页面掉帧

长时间占用js线程

Js是单线程语言,浏览器只分配给 JS 一个主线程,每次从任务队列中执行一个任务,直到任务队列为空为止。当计算时间过长时,这样必然会出现渲染不及时。

 渲染不及时的原因:

浏览器的渲染频率一般是60HZ,即要求1帧的时间为1s / 60 = 16.67ms,浏览器显示页面的时候,要处理js逻辑,还要做渲染,每个执行片段不能超过16.67ms。实际上,浏览器内核自身支撑体系运行也需要消耗一些时间,所以留给我们的时间差不多只有10ms。

常见的优化方式:

    采用requestIdleCallback和requestAnimationFrame,任务分片

页面回流和重绘较多

解决:

1.尽量使用css属性简写:如:用boder代替boder-width,boder-style,boder-color

2.批量修改元素样式 elem.className

3.尽量避免用table布局(table元素一旦触发回流就会导致table里所有的其它元素回流)

4.需要创建多个DOM节点时,使用DocumentFragment创建。

因为:每次创建一个页面就会发生回流,所以采用DocumentFragment批量创建

5.尽量去写css表达式。因为每次调用都会重新计算值(包括加载页面

资源加载阻塞

解决:

(1)优化资源加载,代码拆分,按需加载,降低CSS对渲染的阻塞,尽早的加载CSS,降低加载的大小

网页内存占用过高,运行卡顿【这里需要注意下js的内存回收机制

意外的全局变量引起的内存泄漏

解决:

(1)使用严格模式避免

闭包引起的内存泄漏

解决:

(1)对于共享变量设置null

遗忘的定时器

解决:

(1)及时回收定时器

循环引用

解决:

(1)循环引用就是对象A中包含另一个指向对象B的指针,B中也包含一个指向A的引用。

因为IE中的BOM、DOM的实现使用了COM,而COM对象使用的垃圾收集机制是引用计数策略。所以会存在循环引用的问题

方法:手工断开js对象和DOM之间的链接,赋值为null。

例如:

function handle () {

    var element = document.getElementById(“testId”);

    element.onclick = function (){

        alert(element.id)

    }

}

解决:

function handle () {

    var element = document.getElementById(“testId”);

    element.onclick = function (){

        alert(element.id)

    }

    element = null

DOM删除时没有解绑事件

解决:

(1)比如删除一个button,但是并没有解除button上的事件

没有清理的DOM元素引用

dom节点或事件占用内存过大

解决:

(1)采用虚拟列表和事件委托文章来源地址https://www.toymoban.com/news/detail-428621.html

到了这里,关于在前端开发中,什么样的代码会导致性能很低?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 掘金AIGC时代,开发者更需要什么样的大模型?

      当前,火热的AI大模型领域需要一些冷思考。 自去年年底ChatGPT掀起一轮AIGC热潮以来,国内科技企业扎堆发布大模型和类ChatGPT产品。截止2023年4月,已公开宣布发布或即将发布AI大模型的企业达数十家。多模态大模型的能力不断迭代,市场竞争加剧,同时监管意见及时出台,

    2024年02月09日
    浏览(50)
  • 【从零开始拿捏数据结构】 顺序表是什么?它有什么样的特性?结构到底是什么样的?

    🎥 屿小夏 : 个人主页 🔥个人专栏 : 数据结构解析 🌄 莫道桑榆晚,为霞尚满天! ​ 什么是数据结构?我们为什么要学数据结构?数据结构中的顺序表长什么样子?它是怎么运用? ​ 本期我们将对这些一一讲解,彻底明白数据结构的重要性,以及顺序表是一种什么的数据

    2024年02月08日
    浏览(106)
  • IPD是什么?适合什么样的团队?

    IPD,全称为“Integrated Project Delivery”,即集成产品开发。它是一种全新的项目管理方法,最初源于建筑行业,随着时间的推移,已经应用到了各行各业的项目管理中。IPD是一种以协同合作为核心的工作模式,在这种模式下,项目中的所有相关方在项目的整个生命周期中进行更

    2024年02月13日
    浏览(51)
  • 云计算学习需要什么样的电脑

    一、认识电脑 1. 电脑是如何组成的 2. 云计算学习需要配置什么样的电脑 3. 学习云计算为什么对CPU、硬盘、内存性能要求高 二、电脑升级加装 1. 如何提高旧电脑性能 2. 拆装步骤 电脑的组成 硬件系统:电源、主板、CPU、内存、硬盘、声卡和网卡等 软件系统:系统软件、操作

    2024年02月10日
    浏览(49)
  • 抖客是种什么样的盈利方式

    抖客是什么?怎么推广?如何设置?抖客联盟app有什么用,类似抖客联盟的app有哪些,抖客是种什么样的盈利方式 抖音直播间引流、增长,抖客来帮忙!助力MCN机构培养达人,提升达人等级,这时候也需要一大批抖客,大家是否知道抖客是什么呢?应该要怎么进行推广呢? “抖客”

    2023年04月08日
    浏览(48)
  • 法线贴图可以实现什么样的3D效果

    在线工具推荐: 3D数字孪生场景编辑器  -  GLTF/GLB材质纹理编辑器  -  3D模型在线转换  -  Three.js AI自动纹理开发包  -  YOLO 虚幻合成数据生成器  -  三维模型预览图生成器  -  3D模型语义搜索引擎 在 3D 建模中,曲面由多边形表示。照明计算是基于这些多边形的几何形状执

    2024年02月03日
    浏览(57)
  • 百万赞同:网络安全为什么缺人? 缺什么样的人?

    1.网络安全为什么缺人? 缺人的原因是有了新的需求 以前的时候,所有企业是以产品为核心的,管你有啥漏洞,管你用户信息泄露不泄露,我只要做出来的产品火爆就行。 这一切随着《网络安全法》、《数据安全法》、《网络安全审查办法》等一系列有关网络安全的法律法规

    2023年04月23日
    浏览(72)
  • 家电CRM是什么样的?系统功能解析

        CRM 系统管理软件出现以来按照企业规模和行业划分出现了不同的细分类型,家电 CRM 就是其中一种。本文将简要向您介绍, 家电 CRM 是什么,有什么功能、作用及其价格。 一、家电 CRM 概念 家电 CRM 是客户管理软件供应商为家电行业量身打造的一种客户关系管理系统。

    2024年02月05日
    浏览(54)
  • 工具在接口测试中发挥什么样的作用?

    接口测试究竟是什么?为什么要用接口测试?它有哪些工具呢?这一连串的问题敲击着我们,请带着这些问题,在本文中寻找答案,我将为您打开接口测试的大门。 1 初探接口测试 接口测试是什么。它检查数据的交换,传递和控制管理过程,它绕过了移动端,对服务端进行测

    2023年04月08日
    浏览(44)
  • 元宇宙时代的HTTP应该是什么样?

    运行整个Web世界的HTTP协议即将进行一次更新!互联网工程任务组(IETF)最近发布了业内诸多机构多年合作的产物:HTTP/3。HTTP/3使用QUIC这种全新传输协议可以在最具挑战性的网络上带来更好的性能。同时,这些更新也让我们在HTTP的文档方面有更多问题需要注意。 QUIC的RFC于去

    2024年02月19日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包