前端科举八股文-性能优化篇

前端科举八股文-性能优化篇

  • 常见的前端性能优化方案?
  • css精灵图的原理?
  • 说说懒加载的原理
  • 什么是防抖节流?
  • 什么是重绘和重排,如何减少重绘和重排
  • 如何减少重排?
  • webpack是干什么的?
  • 简历上写到你使用了vite,讲讲它和webpack的区别?
  • webpack的核心配置是什么?
  • 有开发过loader吗? 他的本质是什么?
  • 常用的loader?
  • 为什么plugins可以执行更高级的任务,loader不可以呢?
  • webpack可以进行哪些优化

常见的前端性能优化方案?

前端性能优化方案可以从几个方向去切入,
第一点是从请求方面去优化。可以使用css精灵图或者懒加载来减少http的请求数。可以使用cdn分发网络加快请求效率。
第二点是从代码层面去优化,比如将css写在页面顶部,使资源优先加载,将js写在页面底部,使js执行不阻塞页面的渲染。使用防抖节流等技巧去优化代码的执行效率。尽量避免浏览器的重绘与重排。
第三点是从缓存方向去优化,浏览器向服务器端请求资源是十分耗时的,可以将一些不常变化的资源通过http的缓存协议缓存到本地。使得浏览器直接从本地缓存中读取资源,提高效率。
第四点可以通过一些第三方打包工具,比如webpack,可以使用webpack的插件完成线上代码压缩功能、tree-shaking、图片压缩等进一步压缩线上代码体积。

css精灵图的原理?

精灵图的原理就是把多张图片压缩成一张图片,这种优化方案并不能减少需要传输的数据体积。比如一个网站需要多张图片资源,精灵图可以把多张图片资源合并成一张之后,通过css的定位属性精准的定位到所需要使用的图片坐标来使用。

说说懒加载的原理

懒加载就是在页面渲染时避免加载一些不必要的资源。所谓的不必要的资源就是比如一个官网首页,用户进入到这个页面时能看到的范围肯定时有限的。所以在视口之外的,也就是说需要滚动才能看到的一些图片资源实际上是不需要加载的。可以等到这些资源进入到用户视口区域内再去加载。可以通过getBoundingClientRect这个js方法去判断。

什么是防抖节流?

防抖节流是通过js的优化手段去减少一些高频次触发的事件。比如移动端常见的场景是下拉获取最新的内容。如果不加以限制,在滚动过程中可能会触发上百次的请求。防抖就是把高频触发的事件合并成一次。节流就是将高频触发的场景优化成低频触发。(具体实现方法放在前端科举八股文-手撕代码篇)

什么是重绘和重排,如何减少重绘和重排

浏览器从绘制页面到呈现会生成两棵树,一个css树一个dom树,然后把两个合并生成渲染树之后再挂载到页面上。然后在页面更新时,如果更新时需要重新绘制css树和dom树的叫做重排,不需要重新绘制只需要重新渲染的叫做重绘。比如页面的首次渲染,修改字体,修改背景颜色,边框颜色就只会引发重绘。但是修改元素大小引发网页整体结构发生变化的,就叫做重排。重排的开销是很大的,所以要尽量避免重排。

如何减少重排?

1、如果需要频繁操作dom的场景可以使用文档碎片来合并批量操作,一次性去操作dom。
2、将一些频繁变化的元素,比如动画元素设置脱离文档流使它不会影响到其他dom元素的布局,进而减少重排。
3、在可能改变页面布局的场景下使用防抖节流(比如resize)

webpack是干什么的?

简单来说,webpack就是帮助浏览器去识别它默认情况下不能识别的语法。因为浏览器是只认识JS语法的。那么如果我们在js中如引用图片,引用css资源,就要借助webpack的帮助来实现这些功能。webpack可以使用css-loader,vue-loader去处理css资源,vue文件。使这些文件也能正常的被浏览器识别并使用

简历上写到你使用了vite,讲讲它和webpack的区别?

首先vite将项目代码分为源码和依赖两部分,vite在处理依赖部分使用的是go语言,由于语言优势,go语言先天就会比webpack快上10-100倍。
其次在项目启动时,由于现代浏览器都支持ES6的模块化语法了。所以现代浏览器都是先直接启动开发服务器,然后根据打开的页面去动态的请求页面资源。而webpack会从打包入口开始,把整个项目打包之后再去启动开发服务器。所以项目越大 vite的优势会越明显。

webpack的核心配置是什么?

1、入口 entry 表示需要从哪个文件开始去打包整个项目
2、output 表示打包成功之后的输出文件夹
3、loader 表示文件的处理器
4、plugins 插件、可以完成loader不能完成的一些更高级更复杂的功能
5、mode 打包模式 如果是生产模式的话会自动开启代码压缩功能

有开发过loader吗? 他的本质是什么?

开发过demo,loader的本质其实就是函数,在loader匹配文件时会将文件作为参数传入到函数中,然后在loader中处理最后返回

常用的loader?

css-loader style-loader sass-loader vue-loader image-loader 等等

为什么plugins可以执行更高级的任务,loader不可以呢?

因为loader的本质就是简单的函数,处理能力有限,而webpack在每一次打包编译的过程中都会产生一个complier对象,这个对象可以访问到整个编译生命周期暴露出来的hooks,可以通过这些暴露出来的api来执行更加广泛、更加高级的功能。

webpack可以进行哪些优化

1、对webpack的loader属性加上includes和exclude来加快执行效率
2、生产模式下webpack会默认开启对代码的压缩
3、通过tree-shaking来去除代码中无用的部分,进一步减少代码体积
4、使用code-split结合vue的动态路由实现路由的懒加载
5、通过webpack的插件实现preload,prefetch等预加载功能
6、使用oneOf关键字来提升loader的匹配效率。

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

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

相关文章

Redis集群-计算key的插槽值等命令

文章目录 1、集群方式登录主机63792、计算key应该保存在那个插槽3、计算某个插槽中保存的key的数量4、返回指定槽中的键5、查看redis的版本5.1、Redis集群的自动故障转移5.2、主节点下线,从节点自动升为主节点5.2.1、杀死主节点63795.2.2、登录从机6383,…

AI大模型企业应用实战-Prompt让LLM理解知识

1 Prompt Prompt 可理解为指导AI模型生成特定类型、主题或格式内容的文本。 NLP中,Prompt 通常由一个问题或任务描述组成,如“给我写一篇有关RAG的文章”,这句话就是Prompt。 Prompt赋予LLM小样本甚至零样本学习的能力: LLM能力…

【网络安全学习】漏洞扫描:-03- Nikito与Wapiti漏洞扫描的使用

1️⃣ Nikto漏洞扫描 Nikto是一个开源的Web扫描评估程序,它可以对目标Web服务器进行快速而全面的检查,以发现各种潜在的安全问题和漏洞。 🅰️ 如何使用 ❓ nikto -Display 1234ep -h [域名或IP地址] -o nikto.html # -h参数:指…

GitHub每日最火火火项目(6.25)

modelscope / DiffSynth-Studio: 项目介绍:DiffSynth-Studio 是一个基于 Diffusion 模型的创意工具,让用户能够享受扩散模型的神奇魔力。它可能提供了一系列功能和接口,使用户能够探索和生成各种创意内容,如音乐、图像…

栈与队列 Leetcode 347 前k个高频元素

栈与队列 Leetcode 347 前k个高频元素 Leetcode 347 灵活运用C库函数&#xff0c;使用匿名函数排序&#xff0c;sort可以替换为快排实现&#xff08;面试感觉可能会手撕&#xff0c;机考直接使用sort&#xff09; class Solution { public:vector<int> topKFrequent(v…

南昌服务器托管让数据存储更安全

南昌&#xff0c;作为长江中游地区的重要中心城市&#xff0c;近年来经济发展迅速&#xff0c;产业结构不断优化。随着大数据、云计算、人工智能等新一代信息技术的快速发展&#xff0c;南昌的信息化建设步伐不断加快&#xff0c;为企业提供了良好的发展环境。在这样的背景下&a…

xml----命名空间详解

一、XML 命名空间&#xff08;namespace&#xff09;------ xmlns 属性 我们使用xmlns 属性来指定元素的命名空间&#xff0c;格式如下&#xff1a; xmlns:namespace-prefix“namespaceURI” 即 xmlns:前缀“命名空间” xmlns 是 xml namespace的意思&#xff0c;是xml文件规范…

通过迭代器删除容器中的元素

通过之前的介绍我们知道通过迭代器来遍历单例集合的操作仍然需要借助于循环结构。而且我们知道在单例集合中调用iterator方法返回的Iterator对象中还有一个remove方法我们没有介绍&#xff0c;它的作用是删除容器中的元素。说道这里应该有人会发现一个很明显的问题&#xff0c;…

RockChip Android12 Launcher3启动与布局分析

目录 一:概述 二:编译 三:启动 1、AndroidManifest.xml 2、Launcher 四:布局 1、LauncherAppState 2、InvariantDeviceProfile 3、initGrid 4、getPredefinedDeviceProfiles 5、invDistWeightedInterpolate 6、initGrid 7、initDeviceProfile 8、DeviceProfil…

[MySql]两阶段提交

文章目录 什么是binlog使用binlog进行恢复的流程 什么是redolog缓冲池redologredolog结构 两阶段提交 什么是binlog binlog是二进制格式的文件&#xff0c;用于记录用户对数据库的修改&#xff0c;可以作用于主从复制过程中数据同步以及基于时间点的恢复&#xff08;PITR&…

Webpack: 借助 Babel+TS+ESLint 构建现代 JS 工程环境

概述 Webpack 场景下处理 JavaScript 的三种常用工具&#xff1a;Babel、TypeScript、ESLint 的历史背景、功能以及接入 Webpack 的步骤借助这些工具&#xff0c;我们能构建出更健壮、优雅的 JavaScript 应用 使用 Babel ECMAScript 6.0(简称 ES6) 版本补充了大量提升 JavaSc…

互联网应用主流框架整合之Spring Boot运维体系

先准备个简单的系统&#xff0c;配置和代码如下 # 服务器配置 server:# 服务器端口port: 8001# Spring Boot 配置 spring:# MVC 配置mvc:# Servlet 配置servlet:# Servlet 的访问路径path: /sbd# 应用程序配置application:# 应用程序名称name: SpringBootDeployment# 配置数据…

第 133 场 LeetCode 双周赛题解

A 使所有元素都可以被 3 整除的最少操作数 遍历 n u m s nums nums &#xff0c;每有一个不被 3 3 3 整除的数&#xff0c;则操作数加 1 1 1 class Solution {public:int minimumOperations(vector<int>& nums) {int res 0;for (auto x : nums)if (x % 3 ! 0)res…

杂记 | 搭建反向代理防止OpenAI API被封禁(对于此次收到邮件提示7月9日后将被屏蔽的解决参考)

文章目录 重要声明&#xff08;免责&#xff09;01 OpenAI封禁API的情况02 解决方案及原理2.1 原因分析2.2 解决方案2.3 步骤概述 03 操作步骤3.1 购买一个海外服务器3.2 申请一个域名3.3 将域名指向代理服务器3.4 在代理服务器上安装nginx3.5 配置反向代理 重要声明&#xff0…

接口自动化测试

接口自动化测试 为什么要做自动化测试&#xff1f;如何做自动化测试测试工具 本文只讲方法&#xff0c;不会太多关注具体实用细节。 为什么要做自动化测试&#xff1f; 当接口的功能很复杂、很灵活、频繁变更时&#xff0c;代码稍微有些变更&#xff0c;影响范围很难短时间内…

网工内推 | 深圳网工,国企,最高20k,六险一金,NA以上认证

01 沛顿科技&#xff08;深圳&#xff09;有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1、负责网络设备管理及维护&#xff0c;确保网络系统的稳定运行&#xff1b; 2、负责有效规划及实施网络布线系统&#xff1b; 3、负责服务…

打造你的跨境电商平台:从pandabuy的成功看如何开发淘宝代购集运系统

在当今全球化的电商浪潮中&#xff0c;跨境购物已成为一种趋势。pandabuy作为一个成功的跨境独立站&#xff0c;其淘宝代购集运系统凭借高效的服务和优质的用户体验广受欢迎。对于希望建立类似平台的创业者来说&#xff0c;深入分析pandabuy的成功经验&#xff0c;并运用于自身…

LV、古驰奢侈品跌落神坛!2024消费风向彻底变天!2024创业新风口!2024创业小成本项目!

LV下滑6%、古驰暴跌28%&#xff0c;奢侈品在华越来越卖不动&#xff0c;外媒开始着急了&#xff01;就在前段时间&#xff0c;美媒罕见发声&#xff0c;表示今年1季度特别困难&#xff0c;有奢侈品公司在华负增长高达30%。还说如何提升销量&#xff0c;是当下奢侈品牌在华的头等…

使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集

1&#xff0c; 问题&#xff1a;本来是好的&#xff0c;突然编译运行报错&#xff0c;说是确少包&#xff0c; 解决方案&#xff1a;重启以后好了 2&#xff0c;有完美的马鞍波&#xff0c;为什么不能够转动呢&#xff1f; 原因是我这里模型的问题&#xff0c;我计算出来的是占…

前端请求XMLHttpRequest详解

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 javascript 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 这篇文章…