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

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

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

(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日
    浏览(47)
  • 【从零开始拿捏数据结构】 顺序表是什么?它有什么样的特性?结构到底是什么样的?

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

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

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

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

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

    2024年02月10日
    浏览(45)
  • 法线贴图可以实现什么样的3D效果

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

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

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

    2023年04月08日
    浏览(44)
  • 百万赞同:网络安全为什么缺人? 缺什么样的人?

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

    2023年04月23日
    浏览(65)
  • CRM系统如何搭建?流程是什么样的?

      CRM系统可以提高企业的销售效率和客户满意度,从而增加企业的收入和利润。但是,要想成功地上线CRM系统,需要经过一系列的步骤和流程,下面说说, 企业如何上线CRM系统?CRM系统搭建流程。 需求分析是CRM系统搭建的第一步,也是最重要的一步。在这个阶段,企业需要

    2024年02月13日
    浏览(48)
  • 舒适交友 - 什么样的婚姻最舒服 稳态婚姻

    人人都是心理学家,mbti等_个人渣记录仅为自己搜索用的博客-CSDN博客 人生两大目标:  生产力提升 +  让身边的人快乐. 目录 1. 相处是舒服的, 能够聊天, 分享欲, 表达欲 2. 追求的东西另外一方能支持, 满足. 3. 少被影响. 为什么说离我们远的人成功对我们没有什么影响,但是身边

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

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

    2023年04月08日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包