前端性能优化

197 阅读2分钟

前端优化是面试中高频问题,面试官可以通过这个问题考察面试者的前端功底。对于一个工作几年的前端工程师来说,做的事情无时无刻不体现性能,比如说打包项目的时候,学某个知识的时候为了性能这么去做,在学 http 的时候为了性能,应用某个技术的时候为了体验更流畅。

接下来我分项目打包构建阶段、资源加载阶段、页面展示阶段、使用体验流畅阶段 分四个阶段总结如何提升性能。

打包构建阶段

开发的过程中用到的构建工具,构建的时候需要快,不然写完代码后编译个 5 分钟,再改动个代码打包个 5 分钟,这也太慢了。

  • 并发构建
    • 打包的时候使用插件,多进程进行
  • 过滤不相关的目录
  • 使用缓存

资源加载阶段

打开一个网页,资源的下载速度要快。

  • 资源压缩
    • 使用 Webpack 去做资源的压缩
  • 路由懒加载
    • 当路由访问的时候才加载对应的组件,把组件按组分块。
  • 图片懒加载
    • 访问图片的时候按需加载
  • 文件越少越好
    • 等同于请求越少越好,资源的合并
  • 资源距离越近越好
    • 把静态资源放在 cdn 上
  • 图片压缩
    • 目前常用的是 svg 图标,需要对 svg 进行合并。

页面展示阶段

资源下载后,需要渲染的速度要快。

  • css 在上,js 在下
  • 不重要的资源使用 async 和 defer 属性异步加载

使用流畅阶段

渲染之后,用户会有一些操作,滚动页面、可见的动画,希望页面流畅、不卡顿。

  • 动画流畅阶段

    • 能用 CSS3 animation 尽量用
    • 开启硬件加速 transform ,少用 left/top
  • 滚动/移动流畅

    • DOM 增删操作要少
    • 高频操作使用防抖和节流