使用 web-vitals 对项目的性能进行测试

2021-07-22 15:10:46 浏览数 (1)

来源:51testing

  web-vitals是什么

  web-vitals是Google发起的,旨在提供各种质量信号的统一指南,我们相信这些质量信号对提供出色的网络用户体验至关重要。其可获取三个关键指标(CLS、FID、LCP)和两个辅助指标(FCP、TTFB)。

  我们用create-react-app 创建的react的项目里,就存在web-vitals 的身影,位于srcindex.js 中:

 web-vitals 使用

  1、通过npm 包的形式使用??

代码语言:javascript复制
  import {getLCP, getFID, getCLS} from 'web-vitals';
  getCLS(console.log);
  getFID(console.log);
  getLCP(console.log);

  2、使用CDN 的形式

代码语言:javascript复制
  <script>
  (function() {
    var script = document.createElement('script');
    script.src = 'https://unpkg.com/web-vitals';
    script.onload = function() {
      // When loading `web-vitals` using a classic script, all the public
      // methods can be found on the `webVitals` global namespace.
      webVitals.getCLS(console.log);
      webVitals.getFID(console.log);
      webVitals.getLCP(console.log);
    }
    document.head.appendChild(script);
  }())
</script>

  3、通过谷歌插件的形式进行使用 (需要科学上网)

 需要注意的点:

  1、并不是所有的情况,都会报告具体的指标

  a.如果用户从不与页面交互,则不会报告FID

  b.服务端渲染的页面,则不会报告FCP,FID和LCP

  2、部分指标会存在

  a.每当页面visibilityState更改为hidden时,都应报告CLS

  b.使用浏览器前进后退时,会报告?CLS, FCP, FID, LCP

  3、报告每一次更改的值

代码语言:javascript复制
  import {getCLS} from 'web-vitals';
  // Logs CLS as the value changes.
  getCLS(console.log, true);  // 多加一个参数
  4、允许只报告变化的量(当前值和上一次报告的值之间的差值)
  import {getCLS, getFID, getLCP} from 'web-vitals';
  function logDelta({name, id, delta}) {
    console.log(`${name} matching ID ${id} changed by ${delta}`);
  }
  getCLS(logDelta);
  getFID(logDelta);
  getLCP(logDelta)

  5、性能数据可视化

  可以通过发送指标数据到?性能数据可视化工具? ,不过需要谷歌账号,通过谷歌账号去绑定。

  6、API 的介绍

代码语言:javascript复制
  // 指标名称
  name: 'CLS' | 'FCP' | 'FID' | 'LCP' | 'TTFB';
  // 当前指标的具体值,毫秒级
  value: number;
  //当前值和上一次报告的值之间的差值。
  //在第一个报告中,“ delta”和“ value”将始终相同。
  delta: number;
  //代表此特定指标的唯一ID,该ID特定于
  //当前页面。分析工具可以使用此ID进行重复数据删除
  //为同一个指标发送多个值,或者将多个增量 组合在一起//并计算总计。
  id: string;
  //指标值计算中使用的所有效果条目。
  //注意,随着值的更改,条目将添加到数组中。
  entries: (PerformanceEntry | FirstInputPolyfillEntry | NavigationTimingPolyfillEntry)[];

  7、兼容性:

代码语言:javascript复制
  getCLS(): Chromium,
  getFCP(): Chromium, Safari Technology Preview
  getFID(): Chromium, Firefox, Safari, Internet Explorer (with the?polyfill)
  getLCP(): Chromium
  getTTFB(): Chromium, Firefox, Safari, Internet Explorer

0 人点赞