рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рд░реВрдкрд░реЗрдЦрд╛

рдЖрдЬ рд╣рдо рд░рд┐рдПрдХреНрдЯрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдирдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рднреА рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдореВрд╡реА рдХреНрдпреВ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


рд░рд┐рдПрдХреНрдЯ рдореВрд╡реА рдХрддрд╛рд░ рдРрдк

рд░рд┐рдПрдХреНрдЯрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ


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');

PerformanceChrome рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╕рдордп , рдЖрдк 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 рдбреЗрдЯрд╛рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ , рдЬреЛ рдореБрдЭреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╢реЛрдз рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?


All Articles