
рдХреЛрдб рд╡рд┐рднрд╛рдЬрдиред рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рд╣рд░ рдЬрдЧрд╣ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВ? рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдЬрдХрд▓ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдФрд░ рд╕рднреА рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред
JS рдмрд╣реБрдд рднрд╛рд░реА рдЪреАрдЬ рд╣реИред рдЖрдкрдХреЗ iPhone Xs рдпрд╛ рдмреНрд░рд╛рдВрдб рдХреЗ рдирдП i9 рд▓реИрдкрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдзреАрдореА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд╛рдЦреЛрдВ (рд╢рд╛рдпрдж рдЕрд░рдмреЛрдВ) рдХреЗ рд▓рд┐рдПред рдпрд╛, рдХрдо рд╕реЗ рдХрдо, рдЕрдкрдиреА рдШрдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред
рддреЛ - рдЬреЗрдПрд╕ рдЦрд░рд╛рдм рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ - рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧреА ... рдХреБрдЫ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП, рдФрд░ рд░рд┐рдПрдХреНрдЯ-рдЖрдзрд╛рд░рд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП "рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде" рдЪрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА - рдРрд╕реА рд╕рд╛рдЗрдЯреЗрдВ рд╣реИрдВ, рдЬреЛ рдЬреЗрдПрд╕ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ ... рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЙрдирд╕реЗ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП ...
рдХреЛрдб рд╡рд┐рднрд╛рдЬрди
рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ, рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ, рдпрд╛ рдЗрд╕реЗ рдФрд░ рдЦрд░рд╛рдм рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
1. рдХрдо рдХреЛрдб рд▓рд┐рдЦреЗрдВ
рдпрд╣реА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рдЬреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ React Hooks
рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХреЛрдб рд╢рд┐рдк рдХрд░рдиреЗ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ Svelte
рдЬреИрд╕реЗ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдХрдо рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдпрд╣ рди рдХреЗрд╡рд▓ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╣реИ - рдХреЛрдб "рдХреЙрдореНрдкреИрдХреНрдЯ" рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ "рдХреЙрдореНрдкреИрдХреНрдЯ" рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдпрд╣ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдФрд░ 20 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рд▓рдШреБ рдФрд░ рдзреНрд╡рдирд┐ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рдкрд░реАрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ - рдЦреВрдиреА рдЙрджреНрдпрдо ред рдФрд░, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рд╡реИрдз рд╣реИрдВред

рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдореБрджреНрджрд╛ - рдХреЛрдб рд╣реАред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди рдЖрд╕рд╛рдиреА рд╕реЗ "рдЕрдиреБрд╢рдВрд╕рд┐рдд" 250kb рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрдк рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЫреЛрдЯрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдПрдХ рдорд╣реАрдирд╛ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "рдЫреЛрдЯреЗ" рдЕрдиреБрдХреВрд▓рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ рдФрд░ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реИрдВ - рдмрд╕ size-limit
рд╕рд╛рде bundle-analyzer
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЖрдХрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВред
рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдЬреЛ рд╣рд░ рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕реАрдорд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдХреБрдЫ рдХреЛ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд╛рд░ рдФрд░ рд╕реНрдЯреЛрд░рди ред
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди 200kb рд╕реЗ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рд╣реИред рдпрд╣ 100Mb рдХреЗ рдХрд░реАрдм рд╣реИред рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣рдЯрд╛рдиреЗ рдХрд╛ рднреА рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдХреБрдЫ рдкрд▓ рдмрд╛рдж рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рдЬрд╛рдПрдЧрд╛ред
2. рдХрдо рдХреЛрдб рдЬрд╣рд╛рдЬ
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, code split
ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ - рд╕рдорд░реНрдкрдг ред рдЕрдкрдирд╛ 100mb рдХрд╛ рдмрдВрдбрд▓ рд▓реЗрдВ, рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдмреАрд╕ 5mb рдХрд╛ рдмрдВрдбрд▓ рдмрдирд╛рдПрдВред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ - рдпрд╣ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╡ рддрд░реАрдХрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдЗрд╕рд╕реЗ рдЫреЛрдЯреЗ рдРрдкреНрд╕ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рдмрдирд╛рдПрдВред
рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрднреА рдкрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП: рдЖрдк рдЬреЛ рднреА рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдЪреНрдЪрд╛рдИ
рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдХреГрддрд┐ рдЯрд╛рдЗрдо рд╕реЗрдкрд░реЗрд╢рди рд╣реИ ред рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рдПрдХ рдРрд╕реЗ рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдмрд╕ рдЙрд╕ рдХреЛрдб рдХреЛ рд╢рд┐рдк рди рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЕрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдУред

рдХрд╣рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдХрд░рдирд╛ рдХрдард┐рдиред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рднрд╛рд░реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдХреЛрдИ рднреА рдкреГрд╖реНрда 50% рд╕рдм рдХреБрдЫ рдХреА рддрд░рд╣ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдХрднреА-рдХрднреА code splitting
code separation
рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ - рдЖрдк рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рд╕рдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ "рдмрд╕ рдЙрд╕ рдХреЛрдб рдХреЛ рд╢рд┐рдк рди рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЕрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ" , - рдореБрдЭреЗ рдХреЛрдб рдХрд╛ 50% рдЪрд╛рд╣рд┐рдП рдерд╛, рдФрд░ рдпрд╣реА рдЕрд╕рд▓реА рд╕рдорд╕реНрдпрд╛ рдереАред
рдХрднреА-рдХрднреА рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ import
рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЬрдм рддрдХ рдпрд╣ рд╕рдордп рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдВрддрд░рд┐рдХреНрд╖ рдкреГрдердХреНрдХрд░рдг - рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред
рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ 3 рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:
- рдмрд╕ рдЧрддрд┐рд╢реАрд▓
import
ред рдЗрди рджрд┐рдиреЛрдВ рдмрдореБрд╢реНрдХрд┐рд▓ рдЕрдХреЗрд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд░рд╛рдЬреНрдп рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред Lazy
рдШрдЯрдХ, рдЬрдм рдЖрдк рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж 90% "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди" рдЗрди рджрд┐рдиреЛрдВред- рд▓реЗрдЬрд╝реА
Library
, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ .1
, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд░рд┐рдПрдХреНрдЯ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЖрдпрд╛рддрд┐рдд-рдШрдЯрдХ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп-рдШрдЯрдХреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ ред рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИред
рдШрдЯрдХ рд╕реНрддрд░ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди
рдпрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдкреНрд░рддрд┐-рд░реВрдЯ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди, рдпрд╛ рдкреНрд░рддрд┐-рдШрдЯрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрдиред рдРрд╕рд╛ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдЪреНрдЫреЗ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдмрдирд╛рдП рд╣реБрдП рд╣реИрдВред рдпрд╣ Flash of Loading Content
рд╕реЗ рдореМрдд рд╣реИред
рдЕрдЪреНрдЫреА рддрдХрдиреАрдХреЗрдВ рд╣реИрдВ:
- рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдПрдХ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП
js chunk
рдФрд░ data
рд▓реЛрдб рдХрд░реЗрдВред - рдкреЗрдЬ рд▓реЛрдб (рдлреЗрд╕рдмреБрдХ рдХреА рддрд░рд╣) рд╕реЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
skeleton
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред prefetch
рдЪрдВрдХреНрд╕, рдЖрдк рдПрдХ рдмреЗрд╣рддрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рди-рдЬреИрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред- рд╕рдВрдХреНрд░рдордг рдХреЛ рдирд░рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджреЗрд░реА, рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░реНрд╕,
animations
рдФрд░ Suspense
(рднрд╡рд┐рд╖реНрдп рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрд░, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдм рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рднреВрдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ UX рд╕реЗ рдЫрд╡рд┐
рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛
рддреБрдореНрд╣реЗрдВ рдкрддрд╛ рд╣реИ, рдореИрдВ рдЦреБрдж рдХреЛ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди рдореЗрд░реА рдЕрдкрдиреА рд╡рд┐рдлрд▓рддрд╛рдПрдВ рд╣реИрдВред
рдХрднреА-рдХрднреА рдореИрдВ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рдХрднреА-рдХрднреА рдореИрдВ рдкрд░рд┐рдгрд╛рдореА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ the _more_ code splitting you are introducing - the more you spatially split your page - the more time you need to _reassemble_ your page back
*ред рдЗрд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд╡реЗрд╡реНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- SSR рдпрд╛ рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдмрд┐рдирд╛ред рдЙрдЪрд┐рдд SSR рдЗрд╕ рд╕рдордп рдПрдХ рдЧреЗрдо рдЪреЗрдВрдЬрд░ рд╣реИред

рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдореБрдЭреЗ рджреЛ рдЕрд╕рдлрд▓рддрд╛рдПрдБ рдорд┐рд▓реА рд╣реИрдВ:
- рдореИрдВрдиреЗ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореЗрд░рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмреЗрд╣рддрд░ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдмрдбрд╝рд╛ рдерд╛ред рдореИрдВ "1. рдХрдо рдХреЛрдб рд▓рд┐рдЦреЗрдВ" рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реВрдВред
- рдореЗрд░реА рдкрддреНрдиреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдЫреЛрдЯреА рд╕рд╛рдЗрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред рдпрд╣ рдорд╛рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд░рдордг рдХреЛ рдЕрдзрд┐рдХ "рд╕реНрд╡реАрдХрд╛рд░реНрдп" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
header
рдФрд░ footer
рдХреЛ рдореБрдЦреНрдп рдмрдВрдбрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд╕ рдХреБрдЫ рдЪреАрдЬреЗрдВ, рдХрд╕рдХрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЧрдЧрдирдЪреБрдВрдмреА рдмрдВрдбрд▓ 320kb (рдЧрдЬрд╝рд┐рдк рд╕реЗ рдкрд╣рд▓реЗ) рддрдХред рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдерд╛, рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рдерд╛ред рдПрдХ рд╣рдЬрд╛рд░ рдХреА рдХрдЯреМрддреА рд╕реЗ рдореМрдд ред рдореИрдВ рдХрдо рдХреЛрдб рд╢рд┐рдк рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реВрдВред
рд░рд┐рдПрдХреНрдЯ-рдбреЛрдо 20% рдерд╛, рдХреЛрд░-рдЬреЗрдПрд╕ 10% рдерд╛, рд░рд┐рдПрдХреНрд╢рди-рд░рд╛рдЙрдЯрд░, jsLingui, рд░рд┐рдПрдХреНрд╢рди-рдкреЙрд╡рд░рдкреНрд▓рдЧ ... 20% рдЦреБрдж рдХрд╛ рдХреЛрдб ... рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди
рдореИрдВрдиреЗ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдареАрдХ рд╕реЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛? рдореИрдВрдиреЗ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рди рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдЖрд╡реЗрджрди рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╛рдХреА рдХреНрдпреЛрдВ рд╣реИред
рдпрд╣ рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдерд╛ред рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ CSS рдореЗрдВ рдереАред рд╡реЗрдирд┐рд▓рд╛ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдХреНрд░рдордг рдореЗрдВред
рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ
рдореИрдВ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ:
- рд╕реВрдЪрдирд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреЗрд░реА рдХреЗ рддреБрд░рдВрдд, рдПрдХ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ред
- рдЬрд╛рдирдХрд╛рд░реА "рдХреНрд░реЛрдо" рд╕реЗ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╕рдВрднрд╛рд▓ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдПред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ CSSTransitionGroup рдпрд╛ рд░рд┐рдХрдВрдбрд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдХ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдПрдХ рдФрд░ рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ ред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди ... рд▓реЗрдХрд┐рди ...
рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!
рдЯреАрдПрд▓; рдбреАрдЖрд░ - рдпрд╣рд╛рдВ рджреЛ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рд╣реИрдВ:
DisplayData
рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ , рдФрд░ DOM рд╕реЗ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рд╣реИредFocusLock
рднреА рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, DisplayData
рд░рд┐рдорд╛рдЙрдВрдЯ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдорд╛рдЧ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ ред
рддреЛ рдЪрд▓рд┐рдП рдЕрдкрдиреЗ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ
рдмреИрдЯрдореИрди рдФрд░ рд░реЙрдмрд┐рди
рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдмреИрдЯрдореИрди рдФрд░ рд░реЙрдмрд┐рди рд╣реИред рдмреИрдЯрдореИрди рд╕рдмрд╕реЗ рдмреБрд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╡рд╣ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рддреЛ рдЙрд╕рдХреА рд╕рд╛рдЗрдбрдХрд┐рдХ рд░реЙрдмрд┐рди рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдмреИрдЯрдореИрди рд▓рдбрд╝рд╛рдИ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рд░реЙрдмрд┐рди рдмрд╛рдж рдореЗрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛ред
рдпрд╣ рдмреИрдЯрдореИрди рд╣реИ:
+<FocusLock - enabled={componentControl.value} +> - {componentControl.value && <PageTitle title={componentControl.value.title}/>} + <DisplayData + data={componentControl.value} + visible={componentControl.value !== null} + /> +</FocusLock>
рдпрд╣ рдЙрдирдХреА рд╕рд╛рдЗрдбрдХрд┐рдХ рд╣реИ, рд░реЙрдмрд┐рди ::
-<FocusLock + enabled={componentControl.value} -> + {componentControl.value && <PageTitle title={componentControl.value.title}/>} - <DisplayData - data={componentControl.value} - visible={componentControl.value !== null} - /> -</FocusLock>
рдмреИрдЯрдореИрди рдФрд░ рд░реЙрдмрд┐рди рдПрдХ рдЯреАрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВред
рдФрд░ рдордд рднреВрд▓рдирд╛ - рд╣рдо рдЕрднреА рднреА рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░, рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╕рд╛рдЗрдбрдХрд┐рдХ рдХрд╣рд╛рдВ рд╣реИ? рд░реЙрдмрд┐рди рдХрд╣рд╛рдБ рд╣реИ?

рдПрдХ рдлреБрдЯрдкрд╛рде рдореЗрдВред рд░реЙрдмрд┐рди рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдЪрдВрдХ рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рджрдХ рджреНрд░рд╡реНрдп
Batman
рдпрд╣рд╛рдБ рд╕рднреА рджреГрд╢реНрдп рд╕рд╛рдордЧреНрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рддреБрд░рдиреНрддредRobin
рдпрд╣рд╛рдБ рд╕рднреА рддрд░реНрдХ, рдФрд░ рдлреИрдВрд╕реА рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рдж рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд╣реАрдВред
рдпрд╣ рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдХреЛрдб рд╢рд╛рдЦрд╛рдПрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд╖реИрддрд┐рдЬ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬрд╣рд╛рдВ рдХреЛрдб рд╢рд╛рдЦрд╛рдПрдВ рдХрдЯ рдЬрд╛рддреА рд╣реИрдВ ред
рдХреБрдЫ рднреВрдорд┐ рдореЗрдВ , рдЗрд╕ рддрд┐рдХрдбрд╝реА рдХреЛ replace reducer
рдпрд╛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдб redux рддрд░реНрдХ рдФрд░ рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред
рдХреБрдЫ рдЕрдиреНрдп рднреВрдорд┐ рдореЗрдВ , рдЗрд╕реЗ "3 Phased" code splitting
рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдПрдХ рдФрд░ рдЕрд▓рдЧрд╛рд╡ рд╣реИ, рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╕реНрдердЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рдЧ рдХреЛ рдирд╣реАрдВред

рдирдИ facebook.com рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЫрд╡рд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЧреНрд░рд╛рдлрдХреНрд▓рд╛рдЗрди рдФрд░ рд░рд┐рд▓реЗ рдХреЗ рд╕рд╛рде , рдЬрд╣рд╛рдБ importForInteractions
, рдпрд╛ importAfter
рд╣реИрдВ ред
рдФрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд▓реЛрдХрди рд╣реИ - рдЬрдмрдХрд┐ Batman
рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ, рдЬрдм рддрдХ рд╡рд╣ рдХреБрдЫ рдЧреНрд░рд╛рд╣рдХ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣ рд╣рдореЗрд╢рд╛ рдЖрдХрд╛рд░ рдореЗрдВ рд╣реИ ... рдЬрдмрдХрд┐ Robin
, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡рд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╡рдЬрди рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рдмреИрдЯрдореИрди рдЕрдХреЗрд▓реЗ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдзрд┐рдХ рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ - рд╡рд╣ рдХрдо рдХреАрдордд рдкрд░ рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рддреБрдо рдореЗрд░реЗ рд╣реАрд░реЛ рд╣реЛ рдмреИрдЯ!
рдХреНрдпрд╛ рдПрдХ рдлреБрдЯрдкрд╛рде рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдмрд╣реБрдордд рдХрд╛
useEffect
, useEffect
рдФрд░ рджреЛрд╕реНрддред - рд╕рднреА рдореЛрдбрд▓ рдкреНрд░рднрд╛рд╡ рдкрд╕рдВрдж рд╣реИред рдпрд╛рдиреА
focus
рдФрд░ scroll
рд▓реЙрдХред рдЖрдк рдкрд╣рд▓реЗ рдПрдХ рдореЛрдбрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдореЛрдбрд▓ рдореЛрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ , рдЕрд░реНрдерд╛рдд рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдзреНрдпрд╛рди "рд▓реЙрдХ" рдХрд░реЗрдВред - рдлрд╛рд░реНрдоред рд╕рднреА рддрд░реНрдХ рдФрд░ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рдПрдХ рдлреБрдЯрдкрд╛рде рдкрд░ рд▓реЗ рдЬрд╛рдПрдБ, рдФрд░ рдЙрд╕ рддрд░реНрдХ рдХреЛ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдлрд╝реЙрд░реНрдо рдХреЛ рдЬрдорд╛ рдХрд░реЗрдВред рдЧреНрд░рд╛рд╣рдХ рдлреЙрд░реНрдо рднрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓
Batman
ред - рдХреБрдЫ рдПрдирд┐рдореЗрд╢рдиред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдкреВрд░реА
react-spring
ред - рдХреБрдЫ рджреГрд╢реНрдп рд╕рд╛рдорд╛рдиред рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреА рддрд░рд╣, рдЬреЛ рдХрд┐ рджреВрд╕рд░реА рдмрд╛рд░ рдлреИрдВрд╕реА рд╕реНрдХреНрд░реЙрд▓-рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдордд рднреВрд▓рдирд╛ - рдХреЛрдб рдХрд╛ рд╣рд░ рдЯреБрдХрдбрд╝рд╛, рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд░рд╡рд╛рдирд╛, рдХреЛрд░-рдЬреЗрдПрд╕ рдкреЙрд▓реА- рдФрд░ рдкреЛрдиреАрдлрд┐рд▓ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдЯрд╛рдП рдЧрдП рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЬ рд╣рдорд╛рд░реЗ рдРрдкреНрд╕ рдореЗрдВ рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ 2 рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: 1) рджреГрд╢реНрдп рдкрд╣рд▓реВ 2) рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкрд╣рд▓реВред рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреБрдЫ рдХреНрд╖рдг рдмрд╛рдж рдЖ рд╕рдХрддреЗ рд╣реИрдВред Sidecar
рдпрд╣ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдЬ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рд╕рдм рдХреБрдЫ рддреЗрдЬреА рд╕реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ ред рдФрд░ рдпрд╣ рд╣реЛрдЧрд╛ред
рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХрд╛ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рддрд░реАрдХрд╛
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрдм рдФрд░ рдХреНрдпрд╛ рдПрдХ sidecar
рд╣реИ, рдореИрдВ рдПрдХ рд╕рд░рд▓ рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛:
Sidecar
рдЖрдкрдХреЗ рд╕рднреА рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВ ред рд╕реАрдбреЗрдХрд░ рд╡рд╣ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЖрдЬ рдЬреЛ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдХреЛрдбрдкреНрд▓реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ ( SSR ), рдпрд╛ рд╕рд┐рд░реНрдл рд╕рд╛рджреЗ HTML рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рдо рд╕рднреА рдХрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдереЗред Sidecar
рдЪреАрдЬреЛрдВ рдХреЛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╡реЗ рддрдм рдХрд░рддреЗ рдереЗ рдЬрдм HTML рдФрд░ рддрд░реНрдХ рдирд┐рд╣рд┐рдд рдкреГрд╖реНрда рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдкреГрдердХреНрдХрд░рдг) рдореЗрдВ рд░рд╣рддреЗ рдереЗред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдЪрдЯреАрдПрдордПрд▓, рдкреНрд▓рд╕ рд╕реАрдПрд╕рдПрд╕, рдкреНрд▓рд╕ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЗрдирд▓рд╛рдЗрди, рд╕рд╛рде рд╣реА рдмрд╛рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ .js
рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рдХрд╛рд▓реА рдЧрдИ рд╣реИрдВред
HTML
+ CSS
+ inlined-js
Batman
рдереЗ, рдЬрдмрдХрд┐ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ Robin
рдереЗ, рдФрд░ рд╕рд╛рдЗрдЯ рд░реЙрдмрд┐рди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереА, рдФрд░, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдмреИрдЯрдореИрди рдХреЗ рдмрд┐рдирд╛ (рд╡рд╣ рджреЛрдиреЛрдВ рдкреИрд░реЛрдВ рдХреЗ рд╕рд╛рде рд▓рдбрд╝рд╛рдИ рдЬрд╛рд░реА рд░рдЦреЗрдЧреА) (рдЗрдирд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЯреВрдЯреА рд╣реБрдИ)ред рдпрд╣ рд╕рд┐рд░реНрдл рдХрд▓ рдерд╛, рдФрд░ рдХрдИ "рдЧреИрд░ рдЖрдзреБрдирд┐рдХ рдФрд░ рд╢рд╛рдВрдд" рд╕рд╛рдЗрдЯреЗрдВ рдЖрдЬ рднреА рд╕рдорд╛рди рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди SSR рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ - js рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдВред рддрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдлреБрдЯрдкрд╛рде рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╣реИ, рддреЛ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ SSR рдореМрдЬреВрдж рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - Theurge.com , рдЬреЛ React рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА js рд╕рдХреНрд╖рдо рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред
рд╡рд╣рд╛рдБ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЖрдк рдПрдХ рдлреБрдЯрдкрд╛рде рдкрд░ рдЙрддрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ
display
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╢рд┐рдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди answer
рдирд╣реАрдВ answer
, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреЛрдб (WYSIWYG рд╕рдВрдкрд╛рджрдХ рд╕рд╣рд┐рдд) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╢реБрд░реВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдмреЙрдХреНрд╕ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдиреАрдореЗрд╢рди рдХреЗ рдкреАрдЫреЗ рдХреЛрдб рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реЗ рдкреГрд╖реНрда рдХреА рджреЗрд░реА рд╕реЗред - рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ред "рдирд┐рдпрдВрддреНрд░рдг" рдХреЗ рдмрд┐рдирд╛ "рд╡реАрдбрд┐рдпреЛ" рдЬрд╣рд╛рдЬред рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдмрд╛рдж рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ, рд╡реЗ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЫрд╡рд┐ рдЧреИрд▓рд░реА,
slick
рддрд░рд╣ред рдЗрд╕реЗ рдЦреАрдВрдЪрдирд╛ , рд▓реЗрдХрд┐рди рдЪреЗрддрди рдХрд░рдирд╛ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдлреБрдЯрдкрд╛рде рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд░рд╛ рд╕реЛрдЪрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд░реВрд░реА рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ ...
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг
(DI) рдШрдЯрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди
sidecar
рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реВрдк рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдмрд╕ рд╕рдм рдХреБрдЫ рдЙрдк рдШрдЯрдХ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ, рдЖрдк "рдкреБрд░рд╛рдиреЗ" рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рдбрдВрдм рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд▓рдЧрднрдЧ рдПрдХ рдЕрд▓рдЧрд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╕реНрдорд╛рд░реНрдЯ рдПрдХ рдбрдВрдмрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╡рд┐рдкрд░реАрдд рд╣реИред
const SmartComponent = React.lazy( () => import('./SmartComponent')); class DumbComponent extends React.Component { render() { return ( <React.Fragment> <SmartComponent ref={this} /> // <-- move smart one inside <TheActualMarkup /> // <-- the "real" stuff is here </React.Fragment> } }
рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрдореНрдм рд╡рди рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдХрд┐рд╕реА рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рднрд╛рд░реА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХреЛрдб-рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рдЕрдм рдПрдХ parallel
рдпрд╛ vertical
рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдкреИрдЯрд░реНрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?
useSidecar
рдирдИ facebook.com рдХреЛ React, GraphQL рдФрд░ рд░рд┐рд▓реЗ рдХреЗ рд╕рд╛рде рдмрдирд╛рдирд╛ , рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣рд╛рдБ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ loadAfter
рдпрд╛ importForInteractivity
рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдереА, рдЬреЛ рдХрд╛рдлреА рд╕рдорд╛рди рд╣реИред
рдЙрд╕реА рд╕рдордп рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ useSidecar
рддрд░рд╣ рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ useSidecar
рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЬрд╛рдирдмреВрдЭрдХрд░ hooks
рдЕрдВрджрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдЗрд╕ рд░реВрдк рдореЗрдВ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рд╣реБрдХ рдХреЗ рдирд┐рдпрдо рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред
рдХреГрдкрдпрд╛ рдЕрдзрд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдШрдЯрдХ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рдХрд░реЗрдВред рдФрд░ рдЖрдк SideCar
рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ hooks
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
const Controller = React.lazy( () => import('./Controller')); const DumbComponent = () => { const ref = useRef(); const state = useState(); return ( <> <Controller componentRef={ref} state={state} /> <TheRealStuff ref={ref} state={state[0]} /> </> ) }
рдкреНрд░реАрдлреЗрдЪрд┐рдВрдЧ
рднреВрд▓ рди рдХрд░реЗрдВ - рдЖрдк рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреНрд░реАрд▓реЛрдб рдпрд╛ рдкреНрд░реАрдлреИрдЪ sidecar
рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЗрд╕реЗ рд╢рд┐рдкрд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдФрд░ рдЕрджреГрд╢реНрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╛рдорд╛рди - рдкреНрд░реАрдлрд╝рд┐рдЯрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА (рдФрд░ рд╕реАрдкреАрдпреВ рдЦрд░реНрдЪ рдХрд░реЗрдЧреА) рдЬрдм рддрдХ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред
рдПрд╕рдПрд╕рдЖрд░
рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред Sidecar
рдПрд╕рдПрд╕рдЖрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ hydration
рдХрджрдо рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ "рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛" рд╕реНрдердЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ - React.lazy
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдХреБрдЫ Suspense
рдмрд┐рдирд╛ , рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдЕрд╕рдлрд▓рддрд╛ (рд▓реЛрдбрд┐рдВрдЧ) рд╕рдВрдХреЗрддрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди SSR рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдЗрдбрдХрд╛рд░ рдЪрдВрдХреНрд╕ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП SSR рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдмреБрд░реЗ рд╣рд┐рд╕реНрд╕реЗ
рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдХреБрдЫ рдмреБрд░реЗ рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ
рдмреИрдЯрдореИрди рдПрдХ рдкреНрд░реЛрдбрдХреНрд╢рди рдирд╛рдо рдирд╣реАрдВ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐ Batman
/ Robin
рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рдЗрдВрдб рдХреЙрдиреНрд╕реЗрдкреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ sidecar
рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣реА рдореИрдЪ рд╣реИ - maincar
рд▓рд┐рдП рдХреЛрдИ "рдЕрдЪреНрдЫрд╛" рдирд╛рдо рдирд╣реАрдВ рд╣реИред maincar
рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ Batman
, Lonely Wolf
, Solitude
, Driver
рдФрд░ Solo
рдЙрдкрдпреЛрдЧ рдиреЙрди-рд╕рд╛рдЗрдбрдХрд╛рд░ рднрд╛рдЧ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдлреЗрд╕рдмреБрдХ рдиреЗ display
рдФрд░ interactivity
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдо рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд╛рдо рд╣реИ - рддреЛ рдЗрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВ
рдкреЗрдбрд╝ рдХрд╛ рд╣рд┐рд▓рдирд╛
рдпрд╣ рдмрдВрдбрд▓рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Batman
рдФрд░ Robin
ред рдФрд░ stuff.js
рдлрд┐рд░ рдЖрдк рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдШрдЯрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди "рдиреМрдХрд░реА" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
- рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рди рд╕реЗ рдХреЗрд╡рд▓
batman
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред stuff.js
- рд╡реГрдХреНрд╖ stuff.js
рдХреЗрд╡рд▓ рдЗрд╕реЗ рд░рдЦреЗрдЧрд╛ред - рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рди рд╕реЗ рдХреЗрд╡рд▓
robin
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред stuff.js
- рд╡реГрдХреНрд╖ stuff.js
рдХреЗрд╡рд▓ рдЗрд╕реЗ рд░рдЦреЗрдЧрд╛ред - рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рднреА - рджреЛрдиреЛрдВ рд╕рд╛рдорд╛рди рдХреА рдкрд╣рд▓реА рдШрдЯрдирд╛ рдореЗрдВ рдмрдВрдбрд▓ рдХрд┐рдП
stuff.js
ред рдпрд╛рдиреА, рдореБрдЦреНрдп рдмрдВрдбрд▓ ред
рдЯреНрд░реА рд╣рд┐рд▓рд╛рдирд╛ рдХреЛрдб-рд╡рд┐рднрд╛рдЬрди рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рдВрдпреБрдХреНрдд рд░рд╛рд╖реНрдЯреНрд░ рдХреЗ рдЖрдпрд╛рдд
рдПрдХ рдФрд░ рдмрд╛рдд, рд╣рд░ рдХреЛрдИ рднреВрд▓ рдЧрдпрд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд▓рд╛рдЧрдд рд╣реИред рдпрд╣ jQuery рдХреЗ рдпреБрдЧ рдореЗрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдерд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jsonp
рдкреЗрд▓реЛрдб рдХрд╛ рдпреБрдЧ ( json
рдкреЗрд▓реЛрдб рдХреЗ рд╕рд╛рде), рдкреЗрд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ ред
рдЖрдЬрдХрд▓ рд╣рдо рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ import
, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ - рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреЗрдПрд╕ рд╣реИ, рдФрд░ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдирд┐рд░рдВрддрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдЖрдк рдЗрд╕реЗ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рд╣рдореЗрдВ рд╡реЗрдм рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдФрд░ рдореЗрдореЛрд░реА рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдФрд░ рдореЗрдореЛрд░реА рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд░рд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрди-рдЗрдореНрдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдВрднрд╡рддрдГ un-import
рдХреА рдХреНрд╖рдорддрд╛ (рд╡реЗрдмрдкреИрдХ рдЗрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ) рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдШрдЯрдХ-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ unmount
рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИред
рдЕрдм рддрдХ - рдИрдПрд╕рдПрдо рдореЙрдбреНрдпреВрд▓ рдорд╛рдирдХреЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ - рдФрд░ рди рд╣реА рдХреИрд╢ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рди рд╣реА рдЖрдпрд╛рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЙрд▓рдЯрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдлреБрдЯрдкрд╛рде-рд╕рдХреНрд╖рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдирд╛
рдЖрдЬ рддрдХ sidecar
рд╕рдХреНрд╖рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ:
- рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ
index
рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ main
рднрд╛рдЧ рдФрд░ connected
рд╣рд┐рд╕реНрд╕рд╛ (рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ) рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВ- рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ
sidecar
рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред - рд▓рдХреНрд╖реНрдп рдХреЛрдб рдореЗрдВ -
main
рднрд╛рдЧ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ sidecar
- рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ connected
рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдмрд╛рд░ рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рддреЗ рд╣реБрдП рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ main
рднрд╛рдЧ рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдПред
export const Main = ({sidecar, ...props}) => ( <div> {sidecar} .... </div> );
import Main from './Component'; import Sidecar from './Sidecar'; export const Connected = props => ( <Main sidecar={<Sidecar />} {...props} /> );
export * from './Main'; export * from './Connected';
import * from './Sidecar';
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдПрдХ рдЫреЛрдЯреА рддреБрд▓рдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ dynamic import
рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реИрд╕реЗ рднреА - рдпрд╣ children
/ slot
рдкреИрдЯрд░реНрди рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдо рд╣реИред
рднрд╡рд┐рд╖реНрдп
Facebook
рдиреЗ рд╕рд╛рдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рд╕рд╣реА рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ - рддреЛ рдЕрднреА рдХрд░реЗрдВред рдореИрдВрдиреЗ рдмрд╕ рдПрдХ рд╣реА рд╡рд┐рдЪрд╛рд░ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдХреЛрдг рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рд╣реИ (рдФрд░ F8 рд╕рдореНрдореЗрд▓рди рд╕реЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ)ред
рдЕрднреА рдЗрд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдкреГрдердХреНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдбрдкреНрд▓рд┐рдЯ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдмрдбрд╝реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд╢рд┐рдкрд┐рдВрдЧ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рджреЗрдВред
Sidecar
, рд╢рд╛рдпрдж, рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ, рдкреБрд░рд╛рдиреЗ рд╕реНрдХреВрд▓ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдмреАрдЖрдИрдЬреА рдХреЛрдб рдмреЗрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреЛрдб рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд░рд╛рд╢рд┐ рдЬрд╣рд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рдореМрдХрд╛, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛред
рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдФрд░ рднреА рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
10 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдордзреНрдпрдо рд╡реЗрдмрд╕рд╛рдЗрдЯ 300ms рдореЗрдВ "рддреИрдпрд╛рд░" рдереА, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рддреИрдпрд╛рд░ рдереАред рдЖрдЬ рд╕реЗрдХрдВрдб рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 10 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВред рдХреНрдпрд╛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред
рдЖрдЗрдП рдПрдХ рд╡рд┐рд░рд╛рдо рд▓реЗрдВ, рдФрд░ рд╕реЛрдЪреЗрдВ - рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ UX рдХреЛ рдлрд┐рд░ рд╕реЗ рдорд╣рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ...

рд╕рдВрдкреВрд░реНрдг
- рдШрдЯрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдПрдХ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ - рдЖрдк рдЦрд╛рд▓реА рдкреГрд╖реНрда, рдпрд╛ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдХрд╛рд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рдЕрд▓рдЧрд╛рд╡ рд╣реИред
- рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдмрдВрдЯрд╡рд╛рд░реЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдШрдЯрдХ рд╡рд┐рднрд╛рдЬрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рдЕрд▓рдЧрд╛рд╡ рд╣реИред
- рдХреЛрдб, рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪрд┐рддреНрд░ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЬреБрджрд╛рдИ рд╣реИред
рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВ ред
рдмрдВрдж рдХрд░реЛ! рддреЛ рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрдкрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рдЙрдирдХрд╛ рдХреНрдпрд╛?
рдЦреИрд░, рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдерд╛ред рдЕрдм рд╣рдо рдПрдВрдбрдЧреЗрдо рдореЗрдВ рд╣реИрдВ , рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдкреНрддрд╛рд╣ рд▓рдЧреЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдореИрдВ рд╕рд╛рдЗрдбрдХрд╛рд░ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реВрдВ!