рдЖрдЬ рд╣рдо рд░рд┐рдПрдХреНрдЯрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдирдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рднреА рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗредрд╣рдо рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдореВрд╡реА рдХреНрдпреВ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗредрд░рд┐рдПрдХреНрдЯ рдореВрд╡реА рдХрддрд╛рд░ рдРрдкрд░рд┐рдПрдХреНрдЯрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ
React Profiler API рдХреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХреА рдЕрдбрд╝рдЪрдиреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИредimport React, { Fragment, unstable_Profiler as Profiler} from "react";
рдШрдЯрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ Profiler
рдХреЙрд▓рдмреИрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ onRender
ред рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдПрдХ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИредconst Movies = ({ movies, addToQueue }) => (
<Fragment>
<Profiler id="Movies" onRender={callback}>
рдЖрдЗрдП, рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ рднрд╛рдЧреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ Movies
ред рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИредрд░рд┐рдПрдХреНрдЯ рдореВрд╡реАрдЬрд╝ рдХреНрдпреВ рдРрдк рдФрд░ рдореВрд╡реАрдЬрд╝ рд░рд┐рд╕рд░реНрдЪ рд░рд┐рдПрдХреНрдЯрд░ рдбреЗрд╡рд▓рдкрд░рдХреЙрд▓рдмреИрдХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиonRender
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:id
: id
рдШрдЯрдХ рдкреЗрдбрд╝ рд╕реЗ рд╕рдВрдкрддреНрддрд┐ Profiler
рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рддрд┐рдмрджреНрдз рдерд╛редphase
: mount
( рдпрд╛ рдпрджрд┐ рдкреЗрдбрд╝ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдпрд╛ update
(рдпрджрд┐ рдкреЗрдбрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)редactualDuration
: рдирд┐рд╢реНрдЪрд┐рдд рдЕрдкрдбреЗрдЯ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордпредbaseDuration
: рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реЗ рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдордпредstartTime
: рд╕рдордп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗ рдЗрд╕ рдЕрджреНрдпрддрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛редcommitTime
: рдЬрд┐рд╕ рд╕рдордп рд░рд┐рдПрдХреНрдЯ рдиреЗ рдпрд╣ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛редinteractions
: рдЗрд╕ рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдХрдИ "рдмрд╛рддрдЪреАрдд"ред
const callback = (id, phase, actualTime, baseTime, startTime, commitTime) => {
console.log(`${id}'s ${phase} phase:`);
console.log(`Actual time: ${actualTime}`);
console.log(`Base time: ${baseTime}`);
console.log(`Start time: ${startTime}`);
console.log(`Commit time: ${commitTime}`);
}
рд╣рдо рдкреГрд╖реНрда рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ рдФрд░ Chrome рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рдПрдВрдЧреЗред рд╡рд╣рд╛рдВ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПредрдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдкрд░рд┐рдгрд╛рдо, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд░рд┐рдПрдХреНрдЯрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдмреБрдХрдорд╛рд░реНрдХ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВProfiler
рдФрд░ рдШрдЯрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдПрдХ рд▓реМ рдЧреНрд░рд╛рдл рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рд╕рдордп рдХрд╛ рджреГрд╢реНрдп рд╣реИредReact Developer Tools рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛рдореБрдЭреЗ рдпрд╣рд╛рдВ рд╡реНрдпреВ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдкрд╕рдВрдж рд╣реИRanked
, рдЬреЛ рдбреЗрдЯрд╛ рдХрд╛ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рджреГрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реЛрддреЗ рд╣реИрдВредрд░реИрдВрдХ рдХрд┐рдП рдЧрдП рдореЛрдб рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛редрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдореЗрдВ рдорд╛рдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВProfiler
:import React, { Fragment, unstable_Profiler as Profiler} from "react";
render(
<App>
<Profiler id="Header" onRender={callback}>
<Header {...props} />
</Profiler>
<Profiler id="Movies" onRender={callback}>
<Movies {...props} />
</Profiler>
</App>
);
рдФрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдмрд╛рддрдЪреАрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ)ред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛: "рдЗрд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЛрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛?"ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд░рд┐рдПрдХреНрдЯ рдХреЛ рдирдП рдЕрдиреБрд╕реВрдЪрдХ рдкреИрдХреЗрдЬ рд╕реЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рд╣реИ ред рдЖрдк рдЗрд╕ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдБ редрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛") рдФрд░ рд╕рдордп рдЯрд┐рдХрдЯреЛрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╛рддрдЪреАрдд рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдЕрдиреБрд░реВрдк рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВредрд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдмрдЯрди Add Movie To Queue
рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдЗрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ +
ред рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХрддрд╛рд░ рдореЗрдВ рдлрд┐рд▓реНрдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрджреЗрдЦрдиреЗ рдХреА рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдлрд┐рд▓реНрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрдирдпрд╣рд╛рдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдЕрдкрдбреЗрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ:import { unstable_Profiler as Profiler } from "react";
import { render } from "react-dom";
import { unstable_trace as trace } from "scheduler/tracing";
class MyComponent extends Component {
addMovieButtonClick = event => {
trace("Add To Movies Queue click", performance.now(), () => {
this.setState({ itemAddedToQueue: true });
});
};
}
рд╣рдо рдЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдПрдХреНрдЯрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ рдЗрд╕рдХреА рдЕрд╡рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВредрдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдЗрдВрдЯрд░реИрдХреНрд╢рди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкрд╣рд▓реЗ рдШрдЯрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:import { unstable_trace as trace } from "scheduler/tracing";
trace("initial render", performance.now(), () => {
ReactDom.render(<App />, document.getElementById("app"));
});
рдШрдЯрдХ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдПрдкреАрдЖрдИ рдХрд╛ рд▓реЗрдЦрдХрдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗрдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЪрд┐рддреНрд░рдгредрдХрдардкреБрддрд▓реА рдЪрд▓рд╛рдиреЗрд╡рд╛рд▓рд╛
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, Puppeteer рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ ред рдпрд╣ рдПрдХ Node.js рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ DevTools рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредPuppeteer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ tracing.start()
рдФрд░ tracing.stop()
DevTools рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдХреЗрддрдХ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рдЗрди рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╣рдорд╛рд░реЗ рд╣рд┐рдд рдХреЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИредconst puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const navigationPromise = page.waitForNavigation();
await page.goto('https://react-movies-queue.glitch.me/')
await page.setViewport({ width: 1276, height: 689 });
await navigationPromise;
const addMovieToQueueBtn = 'li:nth-child(3) > .card > .card__info > div > .button';
await page.waitForSelector(addMovieToQueueBtn);
await page.tracing.start({ path: 'profile.json' });
await page.click(addMovieToQueueBtn);
await page.tracing.stop();
await browser.close();
})()
рдЕрдм, рдлрд╝рд╛рдЗрд▓ profile.json
рдХреЛ Performance
рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рд╕реЗ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЪрд╛рд▓реВ рд╣реЛ рдЧрдП рд╣реИрдВредрдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдпрджрд┐ рдЖрдк рдШрдЯрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдЗрд╕ рд╕рд╛рдордЧреНрд░реАрдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВредрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп рдПрдкреАрдЖрдИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд╛рдЗрдорд┐рдВрдЧ рдПрдкреАрдЖрдИ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдЯреАрдХ рд╕рдордп рдЯрд┐рдХрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ window.performance.mark()
рдПрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдмрдирд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рдирд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдзрд┐ window.performance.measure()
рдЖрдкрдХреЛ рджреЛ рдорд╛рдкреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
performance.mark('Movies:updateStart');
performance.mark('Movies:updateEnd');
performance.measure('moviesRender', 'Movies:updateStart', 'Movies:updateEnd');
Performance
Chrome рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╕рдордп , рдЖрдк Timing
рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рднрд░рд╛ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ, рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд╛рдЗрдорд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИредChrome рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЯреИрдмрдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп API рдХреЛ рд░рд┐рдПрдХреНрдЯ DEV рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЙрдЗрд▓рд░ API рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд░рдХреЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп рд╕реНрддрд░ 3 рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░, рдЖрдк рдЙрди рд░рд┐рдПрдХреНрдЯ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, RedditTime to first post title visible
рдореАрдЯреНрд░рд┐рдХ рдФрд░ Spotify рдореАрдЯреНрд░рд┐рдХTime to playback ready
редрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд╛рдЗрдорд┐рдВрдЧ рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд░рд┐рдПрдХреНрдЯ рд╕рд╛рдЗрдЯреНрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢реЗрд╖ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреНрд░реЛрдо рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓рдХреЗ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдкреИрдирд▓ рдореЗрдВрдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ редрд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдкреИрдирд▓ рдореЗрдВ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Next.js рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВрдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рддрдВрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╣рд┐рдд:Next.js-hydration
: рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордпредNext.js-nav-to-render
: рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓реЗрдХрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рддрдХ рдХрд╛ рд╕рдордпред
рдЗрди рд╕рднреА рдорд╛рдкреЛрдВ рдХреЛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ Timings
редNext.js рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдФрд░ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ Performance
рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдФрд░ рдХреНрд░реЛрдо рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдРрд╕реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреГрд╖реНрдареЛрдВ рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВредрдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг,рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЗрд╕ рддрдереНрдп рдХреЛ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдирдП рдореАрдЯреНрд░рд┐рдХ рд╣реЛрдВрдЧреЗ - рдЬреИрд╕реЗ рдХреБрд▓ рдЕрд╡рд░реЛрдз рд╕рдордп (рдЯреАрдмреАрдЯреА) рдореАрдЯреНрд░рд┐рдХ , рдЬреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдХрд┐рддрдиреЗ рд╕рдордп рддрдХ рдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдореЛрдб рдореЗрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( рд╕рдордп рд╕реЗ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ )ред рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдореЛрдб рдХреЛ рд░реЛрдЬрдЧрд╛рд░ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЯреАрдмреАрдЯреА рд╕рдВрдХреЗрддрдХ ("рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ") рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИредрдЯреАрдмреАрдЯреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдпреЗ рдЙрдкрдХрд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗрдХрд┐рдРрд╕реЗ рдХрд╛рд░реНрдп рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдСрдирд▓рд╛рдЗрди рд╕рдВрдХреНрд░рдордг рдореЗрдВ рджреЗрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрддрд┐ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг , рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЛрдВ рдкрд░ рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдиреАрдЪреЗ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ 6.0 рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдо рд╣реИред рдпрд╣рд╛рдВ, рдЕрдкреНрд░рдпреБрдХреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреНрд░рдпреБрдХреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИReact.lazy()
редрд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛рд╣рдореЗрд╢рд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╕рдХреЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рдЕрдХреНрд╕рд░ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ Webpagetest рдФрд░ RUM рдФрд░ CrUX рдбреЗрдЯрд╛рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ , рдЬреЛ рдореБрдЭреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВредрдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╢реЛрдз рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?