使用5.0版本的create-react-app
脚手架创建的项目(版本可以通过npm list -g
查看),新增了reportWebVitals.js
文件,内容如下:
const reportWebVitals = onPerfEntry => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;
这个webVital
是Google提出的、检测用户体验的标准,这些指标包含三个关键指标(CLS、FID、LCP)和两个辅助指标(FCP、TTFB)。具体含义如下(参考链接):
LCP (Largest Contentful Paint):最大内容渲染时间。指的是从用户请求网址到窗口中渲染最大可见内容所需要的事件(最大可见内容通常是图片或者视频,或者大块的文本)。
FID (First Input Delay):首次输入延迟。指的是从用户首次与网页互动(点击链接、按钮等)到浏览器响应此次互动直接的时间。用于判断网页进入互动状态的时间。
CLS (Cumulative Layout Shift) :累计布局偏移,得分范围0-1,指的是网页布局在加载期间的偏移量,0表示没有偏移,1表示最大偏移,这个指标指示用户与网站的交互体验,如果网址在加载过程布局一直跳动,用户体验会很差。比如加载一张图片,但没有大小空白占位,导致图片显示时页面高度跳动。
FCP(First Contentful Paint)首次内容绘制。标记浏览器渲染来自 DOM 第一位内容的时间点,内容可能是文本、图像等元素。
TTFB (Time to First Byte) 首字节到达的时间点。
很晦涩啊,通过把index.js
文件的最后一行改为:
reportWebVitals(console.warn);
我们来看看到这些指标长什么样:
FCP值表示,当前页面中元素最早出现时间是在页面开始加载后的112ms。LCP值表示元素最晚出现的时间是加载开始后135.8ms。CLS值表示我的页面中元素的没有偏移,在缩放变换后该值还是0,那么说明这个页面还是比较稳定流畅的。
更多请参考create-react-app 官网文档中对Measuring Performance的描述。