面试题-性能优化

前端项目优化:

一般考虑方面: (挑几点记住)

  1. 我们学的: 懒加载: 路由、图片懒加载

    骨架屏的使用

  2. 压缩文件:可以使用压缩工具(如GZIP)对页面文件进行压缩,减小文件大小,提高页面加载速度。

  3. 减少HTTP请求:减少页面元素的请求次数,可以使用雪碧图、字体图标、JS、CSS合并等优化方式,减小文件数量,提高页面加载速度。

  4. 图片优化:尽量避免在页面中使用大量图片,使用图片时建议进行优化(如进行压缩、减小图片大小等),以提高页面加载速度。

  5. JavaScript优化:尽量避免使用全局变量、提取公共方法、减少全局函数调用、异步加载JS文件等,优化JavaScript代码,提高网页响应效率。

  6. CSS优化:避免使用不必要的样式、提取重复样式、减少选择器的数量等操作,优化CSS代码,减小页面加载时间。

  7. 使用CDN:使用CDN可以将静态文件分发到全球多个节点,减少响应时间和资源文件下载时间,加快资源文件传输速度,提高页面性能和用户体验。

减少项目打包体积: (建议记2,3,5)

减小打包后的体积,我们可以采取以下几种方法:

  1. Tree shaking :webpack内置的功能,打包时自动运行。
    • 能剔除掉 JavaScript 中未被使用的代码,当模块 export 的代码没有被其它模块引用时,打包工具会自动将其从依赖树中剔除
    • 是基于ES6模块机制实现的,只能对静态代码进行剔除,对于动态,无法进行优化 (静态就是我们常用的export, import ; 动态就是require的)
  2. 按需引入第三方库:对于一些常用的第三方库,可以只引入自己需要的功能,例如只引入 lodash 中的某个函数。
  3. 图片和字体资源优化 :对于图片资源和字体资源,我们可以将其压缩并进行优化处理,以减小打包后的体积。
    对于图片资源,可以采用:
    • 使用在线图片压缩工具:网上有许多在线图片压缩工具,可以直接上传图片进行压缩,例如:TinyPNGCompressjpeg等。
    • 使用图片处理库:比如说,使用JavaScript图片处理库,如:Sharp等。
    • 使用webpack-loader:在webpack中,有一些图片压缩的loader可以用来实现自动压缩图片,如:image-webpack-loader、url-loader、file-loader等。这些loader也可以与其他构建工具一起使用。
    • 使用精灵图技术:可以将多张小图片合并成一张图,通过调整图片的位置来显示不同的小图,从而减少网页的加载次数和带宽消耗。
  4. 减少重复代码 :在编写代码时,以通过函数封装、代码抽离等方式减少不必要的重复代码,来减小代码体积。 (尽可能遵循 DRY 原则: Don't Repeat Yourselt)
  5. 服务器和webpack打包同时配置Gzip :
    • 是一种常见的压缩方式,前端开发中,常常将静态资源(如 CSS、JavaScript 和字体等)进行 Gzip 压缩,从而减小文件大小。
    • 原理是将文件中出现重复的字符串压缩掉,然后将压缩后的结果和原始文件一起传输给浏览器,浏览器接收到数据后再进行解压缩 (HTTP 协议支持 Gzip 压缩)
    • 项目中使用插件可以 vite-plugin-compression
    • 后端需要进行相应配置,开启gzip的使用
相关推荐
vx-Biye_Design4 小时前
SSM伴侣动物伴护星小程序06330-计算机课程设计、毕业设计
spring boot·后端·elasticsearch·小程序·架构·课程设计·idea
mldong6 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排6 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60617 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角8 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!8 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰8 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
小疯仔9 小时前
轨迹在地图上“漂“了 500 米?一文吃透 WGS-84→GCJ-02 坐标转换引擎(GPX→JSON 实战源码剖析)
小程序·json·notepad++
mayaairi10 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen10 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能