前端学习系列(11):前端性能优化实战

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南 本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。 阅读详情

前端学习系列(11):前端性能优化实战

一、回顾与引入

在之前的学习中,我们深入探究了Vue、React、Angular等前端框架的进阶知识,包括组件通信、状态管理、服务与路由等。然而,构建一个功能丰富的前端应用只是第一步,优化其性能同样关键。在当今快节奏的互联网环境下,用户对页面加载速度和响应性能的要求越来越高。本期我们将聚焦前端性能优化,从多个维度探讨提升前端应用性能的实战方法。

二、前端性能指标及评估工具的使用

2.1 重要的前端性能指标

  • 首次内容绘制(FCP):指浏览器从开始加载页面到首次将任何文本、图像(包括背景图像)、非空白的canvas或SVG渲染到屏幕上的时间。它反映了页面开始呈现内容的速度。
  • 最大内容绘制(LCP):测量视口内可见的最大图像或文本块完成渲染的时间。这个指标能更好地反映页面的主要内容加载完成的时间,是用户感知页面加载速度的重要指标。
  • 首次输入延迟(FID):测量从用户首次与页面交互(如点击链接、按钮等)到浏览器实际能够开始处理该交互的时间。较低的FID意味着页面响应迅速,用户体验更好。
  • 累积布局偏移(CLS):测量页面在加载过程中发生的意外布局变化。布局偏移会让用户分心,良好的页面设计应尽量减少CLS,确保页面元素稳定显示。

2.2 常用的性能评估工具

  • Google PageSpeed Insights:这是一个免费的在线工具,它可以分析网页的性能,并提供优化建议。它会给出桌面和移动设备上的性能得分,以及详细的性能指标数据和优化提示。
  • Chrome DevTools:是Chrome浏览器自带的强大开发者工具。其中的“Performance”面板可以记录和分析页面的加载过程,展示各个阶段的时间消耗,包括网络请求、脚本执行、渲染等。通过它可以深入了解页面性能瓶颈所在。
  • Lighthouse:同样集成在Chrome DevTools中,也可以作为独立的命令行工具使用。它可以对页面的性能、可访问性、最佳实践、SEO等方面进行全面评估,并生成详细的报告和优化建议。

三、代码层面的性能优化

3.1 压缩和合并代码

  • CSS和JavaScript压缩:使用工具如UglifyJS、Terser来压缩JavaScript代码,去除代码中的空格、注释和不必要的字符,减小文件体积。对于CSS,可以使用cssnano等工具进行压缩。例如,在构建项目时,可以通过配置Webpack等打包工具,在生产环境中自动进行代码压缩。
// Webpack配置示例,使用TerserPlugin压缩JavaScript
const TerserPlugin = require('terser - webpack - plugin');

module.exports = {
  optimization: {
    minimizer: [
      new TerserPlugin()
    ]
  }
};
  • 代码合并:将多个CSS和JavaScript文件合并成一个文件,减少浏览器的HTTP请求次数。在Webpack中,可以通过配置entry和output来实现代码合并。
// Webpack配置合并多个入口文件
module.exports = {
  entry: {
    main: ['./src/index.js', './src/utils.js']
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};

3.2 懒加载和按需加载

  • 组件懒加载:在Vue、React等框架中,可以使用懒加载技术来优化组件加载。例如,在React中使用React.lazy和Suspense来实现组件的懒加载。
import React, { lazy, Suspense } from'react';

const LazyComponent = lazy(() => import('./LazyComponent'));

const App = () => {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <LazyComponent />
      </Suspense>
    </div>
  );
};

export default App;
  • 按需加载资源:对于一些不常用的资源,如大型脚本、图片等,可以采用按需加载的方式。例如,当用户滚动到页面的某个区域时,再加载该区域的图片。
// 监听滚动事件,按需加载图片
window.addEventListener('scroll', function () {
  const images = document.querySelectorAll('img[data - lazy]');
  images.forEach(function (image) {
    if (isInViewport(image)) {
      image.src = image.dataset.lazy;
      image.removeAttribute('data - lazy');
    }
  });
});

function isInViewport(element) {
  const rect = element.getBoundingClientRect();
  return (
    rect.top >= 0 &&
    rect.left >= 0 &&
    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
    rect.right <= (window.innerWidth || document.documentElement.clientWidth)
  );
}

四、资源加载方面的优化

3.1 图片优化

  • 选择合适的图片格式:根据图片的特点选择合适的格式。例如,对于简单的图标和图形,使用SVG格式,它具有无损缩放和体积小的优点;对于照片类图片,优先考虑JPEG格式,同时可以通过调整压缩率来平衡图片质量和文件大小;对于需要透明背景的图片,使用PNG格式。
  • 图片压缩:使用工具如ImageOptim、TinyPNG等对图片进行压缩,去除图片中的冗余信息。在项目构建过程中,也可以集成图片压缩插件,如image - webpack - loader。
// Webpack配置使用image - webpack - loader压缩图片
module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif|svg)$/,
        use: [
          {
            loader: 'file - loader',
            options: {
              name: '[name].[ext]',
              outputPath: 'images/'
            }
          },
          {
            loader: 'image - webpack - loader',
            options: {
              mozjpeg: {
                progressive: true,
                quality: 65
              },
              optipng: {
                enabled: false
              },
              pngquant: {
                quality: [0.65, 0.90],
                speed: 4
              },
              gifsicle: {
                interlaced: false
              },
              webp: {
                quality: 75
              }
            }
          }
        ]
      }
    ]
  }
};

3.2 字体优化

  • 按需加载字体:只加载页面中实际使用的字体子集,减少字体文件的大小。可以使用工具如Font Squirrel的Webfont Generator来生成自定义的字体文件。
  • 使用字体加载器:使用FontFaceObserver等字体加载器来确保字体在页面上正确显示,避免字体闪烁问题。
import FontFaceObserver from 'fontfaceobserver';

const font = new FontFaceObserver('Open Sans');

font.load().then(() => {
  document.documentElement.classList.add('font - loaded');
}).catch(() => {
  console.log('字体加载失败');
});

五、页面渲染方面的优化

3.1 减少重排和重绘

  • 批量修改DOM:避免频繁地修改DOM元素的样式和属性,尽量批量进行修改。例如,先将元素从DOM树中移除,修改完后再添加回去。
// 批量修改DOM示例
const element = document.getElementById('myElement');
const parent = element.parentNode;

// 移除元素
parent.removeChild(element);

// 修改元素样式
element.style.width = '200px';
element.style.height = '200px';

// 重新添加元素
parent.appendChild(element);
  • 使用transform和opacity进行动画:transform和opacity属性在进行动画时不会触发重排,只会触发合成层的重绘,性能较好。
/* 使用transform进行动画 */
.element {
  transition: transform 0.3s ease - in - out;
}

.element:hover {
  transform: scale(1.1);
}

3.2 优化CSS加载顺序

  • 关键CSS内联:将首屏渲染所需的关键CSS内联到HTML文件中,减少外部CSS文件的请求,加快首屏渲染速度。可以使用工具如Critical来提取关键CSS。
  • 异步加载非关键CSS:对于非首屏所需的CSS文件,可以使用rel="preload"或media="print"等方式进行异步加载,避免阻塞页面渲染。
<!-- 异步加载非关键CSS -->
<link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="styles.css"></noscript>

六、总结与下期预告

本期我们全面学习了前端性能优化的实战方法,包括性能指标和评估工具的使用,以及从代码层面、资源加载和页面渲染等方面进行优化的具体技巧。通过这些优化措施,可以显著提升前端应用的性能和用户体验。

下期预告
《前端安全防护与最佳实践》你将学到:

  • 常见的前端安全漏洞,如XSS、CSRF、SQL注入等的原理和危害
  • 针对不同安全漏洞的防护策略和实现方法
  • 构建安全可靠的前端应用的最佳实践和注意事项

📢 系列提示:本系列持续更新中,建议点👍/收藏本篇文章,关注作者及时获取更新提醒。有任何问题欢迎评论区留言交流!

汽车底盘技术解析:从悬架调校到智能化,如何评价国产车底盘实力 汽车底盘作为决定车辆驾驶质感、安全性和耐久性的核心系统,其技术内涵远不止于悬架结构。从行驶系、转向系到制动系的协同工作,底盘调校是一门融合机械原理与工程实践的艺术。在电动化与智能化浪潮下,底盘技术正经历从被动适应到主动响应的变革,CDC可变阻尼减震器和空气悬架等技术的应用,让底盘具备了通过OTA升级实现性能优化的可能。国产汽车品牌如奇瑞、吉利等,通过平台化架构研发与调校经验积累,正推动底盘技术从“能用”向“好用”乃至“塑造独特驾驶风格”迈进。理解底盘技术,需超越简单的结构对比,关注其在实际路况中的滤震性、支 阅读详情

相关推荐

FOC时序及电流采样注意事项

摘要:本文介绍了无刷电机FOC(磁场定向控制)的实现方法,重点解析了电流采样时序与PWM同步的关键技术。在S32K144平台上,需使用两个独立的ADC组件实现双路电流同步采样,采样时刻必须严格对应低边MOS管开启时间并位于PWM波形中央。文章详细说明了硬件触发时序设计、采样电阻配置原则,并通过示波器实测波形验证了电流反馈电路的正确性,指出正弦电流波形应是理想输出形态。关键点包括ADC-PWM时序同步、低边MOS采样及正确的PWM映射配置。

qq_40916548的博客 2622

前端性能优化9大策略(面试一网打尽)!

在项目开发过程中,任何一个细节都有可能影响网站的访问速度,如果不了解性能优化知识,很多不利网站访问速度的因素会形成累加,从而严重影响网站的性能,导致网站访问速度变慢,用户体验低下,最终导致用户流失。

富朝阳的博客 3万+

跨域问题 - 其他 method 都没有跨域问题,只有delete有跨域的问题

跨域的配置等一切正常,GETPOSTPUTOPTIONS都可以正常访问, 唯独有一个DELETE有跨域的问题, 经过排查发现这个DELETE请求有body, 经过一系列排查, 发现头部有一个不太正常的值是为了避免浏览器的影响, 直接在 postman 中新建一个请求, 竟然也有跨域的问题, 后来把的值改成了请求就可以正常调用了.

galoiszhou的博客 527

前端项目性能优化深入学习与实战(持续更新)

Webpack是 一个开源的JavaScript模块打包工具,其最核心的功能是解决模块之间的依赖,把各个模块按照特定的规则和顺序组织在一起,最终合并为一个JS文件或多个。

weixin_40466351的博客 915

电机系列(1) - foc最基本原理、clark变换 、park变换、附代码

什么是FOC? FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制 (VC,Vector Control) ,是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。 简单来说就是,FOC是一种对无刷电机的驱动控制方法,它可以让我们对无刷电机进行 “像素级” 控制,实现很多传统电机控制方法所无法达到的效果。 因为所谓的“矢量控制”其实就是

nepqiu的博客 7万+

【Zephyr电源与功耗专题】13_PMU电源驱动介绍

本文介绍的PMU芯片包含2路DCDC和6路LDO,在Zephyr实时操作系统下实现了完整的电源管理解决方案。

zero的博客 842

打造极致体验:前端性能优化实战指南

在互联网的世界里,速度就是金钱。一个加载速度缓慢的网站,就像是一杯凉了的咖啡,失去了最初的魅力和温度。作为前端工程师,我们的使命之一就是不断追求极致的用户体验,而这其中,性能优化无疑是我们永恒的战场。今天,让我们一起来探索那些能让网站“飞起来”的性能优化实战技巧。

zhaodash97的博客 1099

基于 MATLAB 的 FastICA 算法实现语音信号盲分离

FastICA 算法通过最大化信号的非高斯性,找到独立成分,从而实现信号的分离。这些混合的信号被称为盲源信号,我们希望通过分析混合信号,将它们分离出来以便进行进一步的处理和分析。FastICA 是一种常用的盲源信号分离算法,它基于统计学原理,通过寻找独立成分来实现信号的分离。FastICA(独立成分分析)是一种常用的盲源信号分离算法,在语音和图像处理领域都有广泛的应用。本文将介绍如何使用 MATLAB 实现 FastICA 算法来实现语音信号的盲分离,并提供相应的源代码。FastICA 算法原理。

学习使你进步。 2024

如何进行前端性能优化(持续更新) —— 个人总结篇

优化对于一个程序来说,可以避免许多不必要的问题和资源浪费,还能够提升用户的体验,接下来我会按照各个方面提出如何优化

小文同学的博客 958

ROS与深度相机入门教程:(1)Ubuntu16.04 在ROS中驱动Intel D435i深度相机

Intel在Github上开源了支持所有RealSense系列相机的SDK,包括了D400、SR300系列深度相机和T265双目跟踪相机,支持Linux、Windows、Mac OS以及Android,链接:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installin...

m0_37957160的博客 2075

前端性能优化的七种方法

前端性能优化主要有七种方法,包括减少请求数量、减少资源大小、优化网络连接、优化资源加载、减少重绘回流、使用性能更好的API和构建优化 1、减少请求数量 1.1 图片处理 1.1.1 雪碧图 雪碧图是根据css sprite音译过来的,就是将很多小图标放在一张图片上就称之为雪碧图,可以减少网站http请求数量,但是当整合图片比较大的时候,一次加载比较慢,随着字体图片、svg图片的流行该技术慢慢退出了舞台 1.1.2 Base64 将图片的内容以Base64格式内嵌到HTML中,可以减少http请求数量,但是

马小兜要努力呀 3万+

智能筛选栏 SmartFilterBar 全面解析与实战指南

SmartFilterBar 把复杂的检索界面“模板化”,让开发者聚焦业务逻辑与后端数据质量,而非 UI 小细节。通过精准运用 CDS 注解与 OData 元数据,它能在几毫秒内拼装出专业级筛选体验;结合事件钩子与控制配置,又足以满足极端个性化需求。拥抱 SmartFilterBar,意味着在 Fiori 生态中以最少代码赢得最快价值交付——这正是现代企业应用开发追求的极致效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 404

【性能优化系列之前端】前端性能优化手段

前端i性能

qq_35789269的博客 3153

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

4982亿背后的前端技术—2020天猫双11前端体系大揭秘

今年双11的整体节奏从之前的“光棍节”变为“双节棍”,具体业务上也有很多变化和调整,应了阿里的土话“唯一不变的是变化”。面对这些变化,是挑战也是机会,我们要做的就是,“既要”高效支撑保障...

淘系技术 6996

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从龟速 11s 到闪电 1s,详解前端性能优化之首屏加载

前段时间公司服务器网络波动,网站访问变慢,一些性能问题也随之暴露了出来。纷纷反馈在这样的弱网条件下,访问新项目时,加载了近1分钟都没加载出来,而访问其他页面顶多也就30-40s。在网络恢复后,尝试访问了下页面,无缓存首次打开需要等待近11s的时间,最大的资源达到了3.7M...在对项目做了一些优化处理后,再次无缓存打开可以发现网页几乎是秒开,平均耗时在1s以内在这里总结记录一下,基本上都是一些常规可复制的优化手段,希望能为同样想优化网页性能的你提供思路~

2401_83384536的博客 4675

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

前端面试的性能优化部分(11)每天10个小知识点

前端性能优化是确保网站或应用在加载速度、响应时间和用户体验方面表现最佳的重要实践。减小文件体积:压缩、合并、精简代码和资源。使用浏览器缓存:利用缓存来减少不必要的网络请求。延迟加载:按需加载资源,特别是对于非关键资源。最小化重绘和重排:避免频繁的DOM操作,使用CSS硬件加速。使用CSS和JS动画:避免使用影响性能的JavaScript动画。利用浏览器渲染管线:通过减少阻塞渲染的操作来提高渲染性能。减少HTTP请求:合并文件、使用雪碧图、减小资源数量。

张羽的博客 538

【前端面试系列】JavaScript事件模型完全指南

事件模型是JavaScript中处理用户交互的核心机制。它定义了事件的传播方式和处理方法,是实现页面交互的基础。提高代码质量优化页面性能提升用户体验应对各种面试场景多动手实践理解底层原理关注性能优化积累实战经验让我们一起在技术的道路上不断进步!

徐白知识星球 1186

web前端学习资源分享

2推荐文章(教程) html(5) 后HTML5时代I后HTML5时代II(简单粗暴的介绍html5的api,没什么废话)html5推广(介绍html5开发的创意广告)匠心打造canvas签名组件HTML5/CSS3(汤姆大叔总结的html5和css3的新特性)H5动画开发快车道移动H5前端性能优化指南玩转HTML5移动页面HTML5 进阶系列:文件上传下载HTML5 进阶系列:canvas 动态图表HTML5 进阶系列:拖放 API 实现拖放排序(这个系列的文章都不错,值得大家一看)H5动效的常见制作

weixin_38371427的博客 350

2024年前端最新4982亿背后的前端技术—2024天猫双11前端体系大揭秘(1),面试经验和技巧

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。前端面试题汇总JavaScript性能linux前端资料汇总。

2401_84434442的博客 837

迄今为止最全- 前端性能优化

当我们说前端性能优化的时候,指的可能是不同场景的性能优化。前端涉及性能优化的场景DOMContentLoaded和load事件,分别代表DOM构造完成和首屏资源加载完成。对于之前的页面和现代的服务端渲染的页面,这两个指标都可以很好地衡量首屏内容展示时间。但对于现代复杂的单页应用,都是通过JS操作DOM向页面添加主要内容,对于这种场景,DOMContentLoaded和load事件就不能很好地衡量首屏显示时间了。

weixin_51225684的博客 1352

前端性能优化

性能优化: 一、减少请求资源大小或者次数  1、尽量和并和压缩css和js文件。(将css文件和并为一个。将js合并为一个)   原因:主要是为了减少http请求次数以及减少请求资源的大小   打包工具:   webpack   gulp   grunt .  .... 2、尽量所使用的字体图标或者SVG图标来代替传统png图   因为字体图标或者SVG是矢量图,代码编写出来的,方大不会变形,而且渲染速度快 3、采用图片的懒加载(延迟加载)   目的为了,减少页面第一次加载过程中http的请求次数  

weixin_42378006的博客 195

揭秘双11:前端技术体系

今年双11的整体节奏从之前的“光棍节”变为“双节棍”,具体业务上也有很多变化和调整,应了阿里的土话“唯一不变的是变化”。面对这些变化,是挑战也是机会,我们要做的就是,“既要”高效支撑保障业务先赢,“又要”确保体验和稳定性带给用户极致体验,“还要”追求创新让前端持续演进。为了实现“既要、又要、还要”,包括技术方案、流程机制、人员组织等各方面都进行了大量的设计和保障。最终第一次双峰的双11圆满结束,淘系前端也实现了自己的目标,包括应用大量优化手段和创新方案带来业务转化提升;将FaaS、PHA、ESR等技术应用在

Aliyn的博客 431

11s到1s,性能优化之首屏加载

大家好,我是 漫步,今天来看看前端优化的文章,喜欢记得关注我并设为星标。全文共6511字/词,阅读大概需要13分钟,太长不看党请直接移步????「开始优化」部分直接查看优化手段背景前段时间公司服...

前端开发博客 2705

前端系列 | 2015年双11手淘前端技术巡演 - 前言

前端系列 | 2015年双11手淘前端技术巡演 - 前言 2015-11-16 手机淘宝技术团队MTT 15年双11刚落下帷幕。今年众所周知,是全面“无线化”的一年。数据上我就不说了,可以公开的数据我相信大家多多少少也从各方都了解到了。 在整个阿里体系内,无论技术还是业务,都会把每年的双11当作一个战场,同时也是一个“炼金石”。不管是技术还是业务,不经过双11

panyuwu的专栏 844

2019前端书籍推荐,前端PDF书籍,前端书籍下载

 因前端知识面太大,每人、每个公司的技术体系各不相同,本文并不推荐哪些前端书籍更值得阅读,只是描述下简单信息,以分享的方式把这些书籍共享出来,大家可自行选择。         因书籍过多,本文会陆续更新,有需要什么书籍的朋友可评论留言,下次更新会附上该书籍下载地址。   目录 HTML5相关书籍  CSS相关书籍 jQuery相关书籍  JavaScrip相关书籍 ES6,Vue H...

群来群往的博客 7603
上一篇: 前端学习系列(10):Angular进阶——深入服务与路由
下一篇: 前端学习系列(12):前端安全防护与最佳实践
DoYangTan
博客等级 码龄5年 1946粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值