рдПрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдбрдХрд╛рд░


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


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 рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:


  1. рдмрд╕ рдЧрддрд┐рд╢реАрд▓ import ред рдЗрди рджрд┐рдиреЛрдВ рдмрдореБрд╢реНрдХрд┐рд▓ рдЕрдХреЗрд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд░рд╛рдЬреНрдп рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред
  2. Lazy рдШрдЯрдХ, рдЬрдм рдЖрдк рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж 90% "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди" рдЗрди рджрд┐рдиреЛрдВред
  3. рд▓реЗрдЬрд╝реА 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 рдореЗрдВ рдереАред рд╡реЗрдирд┐рд▓рд╛ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдХреНрд░рдордг рдореЗрдВред


рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ


  • рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдЪрд░ - DisplayData , рдЕрдВрддрддрдГ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ DisplayData рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдПрдХ рдмрд╛рд░ рдорд╛рди рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдиреЗ рдкрд░ - DisplayData рджреГрд╢реНрдпрдорд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмрджрд▓рддреЗ className , рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлреИрдВрд╕реА рд╕рдВрдХреНрд░рдордг рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред FocusLock рд╕рдХреНрд░рд┐рдп рд╣реЛ рдХрд░ DisplayData рдПрдХ рдореЛрдбрд▓ рдмрдирд╛ DisplayData рд╣реИред
     <FocusLock enabled={componentControl.value} // ^ it's "disabled". When it's disabled - it's dead. > {componentControl.value && <PageTitle title={componentControl.value.title}/>} // ^ it's does not exists. Also dead <DisplayData data={componentControl.value} visible={componentControl.value !== null} // ^ would change a className basing on visible state /> // ^ that is just not visible, but NOT dead </FocusLock> 

рдореИрдВ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ:


  1. рд╕реВрдЪрдирд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреЗрд░реА рдХреЗ рддреБрд░рдВрдд, рдПрдХ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ред
  2. рдЬрд╛рдирдХрд╛рд░реА "рдХреНрд░реЛрдо" рд╕реЗ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╕рдВрднрд╛рд▓ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдПред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 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 рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


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

рдЪрд░рдг 3


рдирдИ 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


  • stuff.js
     export * from `./batman.js` export * from `./robin.js` 

рдлрд┐рд░ рдЖрдк рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдШрдЯрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


  • main.js


     import {batman} from './stuff.js' const Robin = React.lazy( () => import('./sidecar.js')); export const Component = () => ( <> <Robin /> // sidecar <Batman /> // main content </> ) 

  • sidecar.js


     // and sidecar.js... that's another chunk as long as we `import` it import {robin} from './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 рднрд╛рдЧ рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдПред


  • main.js

 export const Main = ({sidecar, ...props}) => ( <div> {sidecar} .... </div> ); 

  • connected.js

 import Main from './Component'; import Sidecar from './Sidecar'; export const Connected = props => ( <Main sidecar={<Sidecar />} {...props} /> ); 

  • index.js

 export * from './Main'; export * from './Connected'; 

  • sidecar.js

 import * from './Sidecar'; 

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдПрдХ рдЫреЛрдЯреА рддреБрд▓рдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


 //your app BEFORE import {Connected} from 'library'; // // ------------------------- //your app AFTER, compare this core to `connected.js` import {Main} from 'library'; const Sidecar = React.lazy(import( () => import('library/sidecar'))); // ^ all the difference ^ export SideConnected = props => ( <Main sidecar={<Sidecar />} {...props} /> ); // ^ you will load only Main, Sidecar will arrive later. 

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ dynamic import рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд╡реИрд╕реЗ рднреА - рдпрд╣ children / slot рдкреИрдЯрд░реНрди рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдо рд╣реИред

рднрд╡рд┐рд╖реНрдп


Facebook рдиреЗ рд╕рд╛рдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рд╕рд╣реА рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ - рддреЛ рдЕрднреА рдХрд░реЗрдВред рдореИрдВрдиреЗ рдмрд╕ рдПрдХ рд╣реА рд╡рд┐рдЪрд╛рд░ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдХреЛрдг рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рд╣реИ (рдФрд░ F8 рд╕рдореНрдореЗрд▓рди рд╕реЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ)ред


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


Sidecar , рд╢рд╛рдпрдж, рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ, рдкреБрд░рд╛рдиреЗ рд╕реНрдХреВрд▓ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдмреАрдЖрдИрдЬреА рдХреЛрдб рдмреЗрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреЛрдб рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд░рд╛рд╢рд┐ рдЬрд╣рд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рдореМрдХрд╛, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛред


рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдФрд░ рднреА рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

10 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдордзреНрдпрдо рд╡реЗрдмрд╕рд╛рдЗрдЯ 300ms рдореЗрдВ "рддреИрдпрд╛рд░" рдереА, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рддреИрдпрд╛рд░ рдереАред рдЖрдЬ рд╕реЗрдХрдВрдб рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 10 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВред рдХреНрдпрд╛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред


рдЖрдЗрдП рдПрдХ рд╡рд┐рд░рд╛рдо рд▓реЗрдВ, рдФрд░ рд╕реЛрдЪреЗрдВ - рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ UX рдХреЛ рдлрд┐рд░ рд╕реЗ рдорд╣рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ...



рд╕рдВрдкреВрд░реНрдг


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

рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВ ред


рдмрдВрдж рдХрд░реЛ! рддреЛ рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрдкрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рдЙрдирдХрд╛ рдХреНрдпрд╛?


рдЦреИрд░, рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдерд╛ред рдЕрдм рд╣рдо рдПрдВрдбрдЧреЗрдо рдореЗрдВ рд╣реИрдВ , рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдкреНрддрд╛рд╣ рд▓рдЧреЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдореИрдВ рд╕рд╛рдЗрдбрдХрд╛рд░ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реВрдВ!

Source: https://habr.com/ru/post/hi450942/


All Articles