React: рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп ES рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдирд╡ре░ 2017  ┬╖  104рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдХреЗрд╡рд▓ CommonJS рд╕рдВрд╕реНрдХрд░рдг рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдИрдПрд╕рдПрдо рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ (https://github.com/facebook/react/issues/10021)ред

рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рд╕реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп ES рдирд┐рд░реНрдпрд╛рдд рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ react рдореЗрдВ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рддреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рднреА рд╣реИ рдЬрд┐рд╕реЗ React рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдкреЗрдбрд╝ рдЭрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП import * рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? react-test-renderer/shallow рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдиреЛрдб рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпрд╛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)?

Build Infrastructure React Core Team Breaking Change Discussion

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

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

рд╕рднреА 104 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрдореНрд╣реЛ import * рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдореИрдВ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

export const Component = ...
export default React
React.Component = Component

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдХреНрдпрд╛ рдХреЛрдИ рддрдХрдиреАрдХреА рдХрд╛рд░рдг рд╣реИ? (рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реЛрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ред)

рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ * (рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ) рдЖрдпрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реА рд╣рд┐рд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рд░рд╣реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВ рд░реЛрд▓рдЕрдк рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡ рджреЗрддрд╛ рд╣реВрдВред

рдЙрди рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рд╢рд╛рдпрдж @lukastaegert рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ https://github.com/facebook/react/issues/10021#issuecomment -335128611 рдХреЗ рдмрд╛рдж рд╕реЗ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ

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

рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ _do_ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рдлреНрд▓реИрдЯ рдмрдВрдбрд▓ рдореЗрдВ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдЖрдпрд╛рдд рд╢реИрд▓реА рдХреНрдпрд╛ рд╣реИ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреА рддрд░рд╣ рдорд╛рдирддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ React.Component , React.Children рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдирд╛рдорд┐рдд рдЪреАрдЬ cloneElement

рдЬреИрд╕рд╛ рдХрд┐ @gaearon рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣реАрдВ рдФрд░ рдХрд╣рд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдХрд╛рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдиреНрдпреВрдирддрдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдлрд┐рд░ рднреА, рдлрд╛рдпрджреЗ рд╣реИрдВ:

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╢рд╛рдпрдж рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реБрдирд╛ ЁЯШЙ)
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдореЙрдбреНрдпреВрд▓ рдмрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╢реАрд░реНрд╖ рджрд╛рдпрд░реЗ рдореЗрдВ рдлрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдУрд╣-рдереЛрдбрд╝рд╛-рд╕рд╛ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕реБрдзрд╛рд░ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП React.Component рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдФрд░ рдЪрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рддрд░рд╣ рд░реЛрд▓рдЕрдк рдЖрдорддреМрд░ рдкрд░ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ, рдЗрд╕рд╕реЗ рд╡реЗрдмрдкреИрдХ рдХреЗ рдореЙрдбреНрдпреВрд▓рдХреЙрдиреНрдХреЗрдЯреЗрдиреЗрд╢рдирдкреНрд▓рдЧрд┐рди рдХреЗ рдмреЗрд▓рд┐рдВрдЧ рдЖрдЙрдЯ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИ
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рди рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдмрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдЖрдИрдбреАрдИ рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╕рд╛рди рд╣реИред рд╕реАрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдЙрдкрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдЪрд┐рдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдЙрдирдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред ES6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛрдИ рдмреНрд░реЗрдирд░ рдирд╣реАрдВ рд╣реИред

рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рдЯреНрд░реА-рд╣рд┐рд▓рд┐рдВрдЧ рдХрд╛ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рдЖрдХреНрд░рд╛рдордХ рдХрджрдо рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдирд╡реАрдирддрдо рд░реЛрд▓рдЕрдк рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ) . рдкреНрд░рд╢реНрди рдпрджрд┐ рдЖрдк рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ:

  • рдкреНрд░реЛ: рдореМрдЬреВрджрд╛ ES6 рдХреЛрдб рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рджрд░реНрдж рд░рд╣рд┐рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @jquense рдХреНрдпрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ)
  • CON: рдЪреВрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдПрдХ рдмрд╛рд░ рдЗрд╕ рд╡рд╕реНрддреБ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреА рд╕рднреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдЬреЛ рдлрд┐рд░ рд╕реЗ рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рд╣рд░рд╛ рджреЗрддреА рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рднреА рдпрд╣рд╛рдВ рдХрдард┐рди рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдпрд╣ рднреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓рд╛ рд╣реИ: https://github.com/facebook/react/issues/11526ред рдЬрдмрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдордВрдХреАрдкреИрдЪрд┐рдВрдЧ рдереЛрдбрд╝рд╛ рдЫрд╛рдпрд╛рджрд╛рд░ рд╣реИ, рд╣рдо рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ)ред

рдЗрд╕ рдЯреНрд╡рд┐рдЯрд░ рдмрд╛рддрдЪреАрдд рдХреЗ рдЬрд░рд┐рдП рдпрд╣рд╛рдВ рдЖрдпрд╛ рд╣реВрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рд╣реА рдЙрддреНрддрд░ рд╣реИ: рд░рд┐рдПрдХреНрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯрдбреЙрдо рдХреЛ рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдРрд╕реА рд╡рд╕реНрддреБрдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд░рд╛рдЬреНрдп рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (#11526 рдХреЗ рдмрд╛рд╡рдЬреВрдж) - рдЙрдирдХреЗ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг Component , createElement рдХреЛ 'рдбрд╛рд▓рдиреЗ' рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред

(рдпрд╣ рдмрдВрдбрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рди рддреЛ рдпрд╣рд╛рдВ рд╣реИ рдФрд░ рди рд╣реА рд╡рд╣рд╛рдВ рд╣реИред)

рдмреЗрд╢рдХ, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдпрд╛рдд рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред @lukastaegert рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рд╕рд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ,

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ #11526 рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рд╢рд┐рдкрд┐рдВрдЧ ESM рдиреЗ рд╡реИрд╕реЗ рднреА v17 рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рд╣реЛрдЧреА, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рдиреЗ рд▓рдЧреЗ рд╣реИрдВ

import React, { Component } from 'react'

рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреА рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реЛ:

import * as React from 'react';
import { Component } from 'react';

рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП React рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ) рдХреНрдпреЛрдВрдХрд┐ JSX React.createElement() рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдо JSX рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реИрд╢реНрд╡рд┐рдХ jsx() рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рддрдм рдЖрдпрд╛рдд рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

import {jsx, Component} from 'react';

рдЬреЛ рд╢рд╛рдпрдж рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реЛрдЧрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдпреВрдПрдордбреА рдмрд┐рд▓реНрдб рдХреЛ рдЕрдм window.jsx рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рд╕реБрдЭрд╛рд╡ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ jsx рдХреЗ рдмрдЬрд╛рдп createElement ? рдареАрдХ рд╣реИ, createElement рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдУрд╡рд░рд▓реЛрдбреЗрдб рд╣реИ ( document.createElement ) рдФрд░ рдЬрдмрдХрд┐ рдпрд╣ React. рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИ, рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░ рджрд╛рд╡рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдЯреАрдмреАрдПрдЪ рдореИрдВ рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЙрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдордзреНрдп рдореИрджрд╛рди рд╣реЛрдЧрд╛:

import * as React from 'react';
import { Component } from 'react';

рдФрд░ JSX рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ React.createElement рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХрд░рддреЗ рд░рд╣реЗрдВред

рд╕реНрд╡реАрдХрд╛рд░реЛрдХреНрддрд┐: рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ React рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣реАрдВ рднреА рдЙрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ JSX рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░ import * as React from 'react' (рдкреНрд░реАрдПрдХреНрдЯ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп) рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ? рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛...

import { Component } from 'react';

... рдФрд░ рдирд╛рдорд╕реНрдерд╛рди рдЖрдпрд╛рдд рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдХреНрдпрд╛ @ рд░рд┐рдЪ-рд╣реИрд░рд┐рд╕ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ (рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдпрд╛рдд рдбрд╛рд▓рдирд╛) рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдореБрджрд╛рдп рдХреЛ рдЕрдкрдиреЗ babel-plugin-transform-react-jsx рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореМрдЬреВрджрд╛ рд╕реЗрдЯрдЕрдк рдЕрднреА рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ import * as React from 'react'; рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдмреЗрд╢рдХ рд╣рдореЗрдВ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдорди рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреЛрдЪрд╛ рд╣реИ?

рдмреЗрд╢рдХ рд╣рдореЗрдВ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдорди рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреЛрдЪрд╛ рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрдЭрд╛рд╡ рдХреНрдпрд╛ рд╣реИ? рдмреИрдмрд▓ JSX рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рдиреЗ рд▓рдЧреЗ рд╣реИрдВ

import React, { Component } from 'react'

рдХреМрди рд╕реЗ рд▓реЛрдЧ? рдЖрдЧреЗ рдЖрдУ рдХрд┐ рдореИрдВ рддреБрдореНрд╣рд╛рд░рд╛ рдЙрдкрд╣рд╛рд╕ рдХрд░реВрдВред

рдореИрдВрдиреЗ рд╡рд╣ рдмрд╣реБрдд рдХреБрдЫ рдХрд┐рдпрд╛ ЁЯЩВ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░ рднреА рджреЗрдЦрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрд╕ рд╕рдордп React.createElement рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рд╡рд╣реА рд░рд╣реЗрдЧрд╛ред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ (рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд╛рдпрд░реЗ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореВрд▓ рд░реВрдк рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рддрдХ рд╕рднреА рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ), рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдмрд╣реБрдордд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдЪрд╛рд╣рд┐рдП)ред рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдк рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдЬреЛ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдФрд░ рднреА рд╕рдЪ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреЗрдПрд╕рдПрдХреНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬреЗрдПрд╕рдПрдХреНрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ React.createElement рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдСрдЯреЛ рд╕рдореНрдорд┐рд▓рди рдореЗрдВ рдмрджрд▓рдирд╛ рдЙрдЪрд┐рдд рдмрд╛рдд рд╣реИред рд╣рдо рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╕рдордп рдкрд░ рд╣реИрдВ, рдмреЗрдмреЗрд▓@7 рдЬрд▓реНрдж рд╣реА рдЖ рд░рд╣рд╛ рд╣реИ (-рдЗрд╢)ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ babel-helper-module-imports рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд (es/cjs) рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рд╣реИред

рдЖрдЬ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ (рджрд╛рдпрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рдорд╛рдирддреЗ рд╣реБрдП) рдХреЛ рдЬрдорд╛рдирдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдФрд░ рдмрд╣реБрдордд рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдзрд╛рд░ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдмрдбрд╝рд╛ рдирд╣реАрдВ - рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА) рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдкреЗрдбрд╝ рдЭрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

@alexlamsl рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж uglify-es рдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ export default рджрдВрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ:

$ cat mod.js 
export default {
    foo: 1,
    bar: 2,
    square: (x) => x * x,
    cube: (x) => x * x * x,
};
$ cat main.js 
import mod from './mod.js'
console.log(mod.foo, mod.cube(mod.bar));



md5-d6d4ede42fc8d7f66e23b62d7795acb9



$ uglifyjs -V
uglify-es 3.2.1

```js
$ cat bundle.js | uglifyjs --toplevel -bc
var mod_foo = 1, mod_bar = 2, mod_cube = x => x * x * x;

console.log(mod_foo, mod_cube(mod_bar));
$ cat bundle.js | uglifyjs --toplevel -mc passes=3
console.log(1,8);

рд╡рд╛рд╣, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирдпрд╛ рд╣реИ ЁЯСП рдХреНрдпрд╛ uglify-es рдХреЛ рдЕрдм рд╕реНрдерд┐рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ? рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рд╡реИрд╕реЗ рднреА - рд░реЛрд▓рдЕрдк рджреБрдирд┐рдпрд╛ рдореЗрдВ рдпрд╣ рд╕рдм рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ React рдЬреНрдпрд╛рджрд╛рддрд░ рдРрдкреНрд╕ рдореЗрдВ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЕрдзрд┐рдХрддрд░ webpack рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдХреЛрдк рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЕрднреА рднреА рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЫреЛрдЯреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдЙрдирдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ uglisy-es + rollup рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрд░реНрдердкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ - рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдирд╛рдорд╕реНрдерд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ import * as Namespace from 'namespace' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдмреЗрд╣рддрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреНрдпрд╛ uglify-es рдХреЛ рдЕрдм рд╕реНрдерд┐рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдЬреЗрдПрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рддрд░рд╣ рд╕реНрдерд┐рд░ред рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ 500K рд╕реЗ рдЕрдзрд┐рдХ рдбрд╛рдЙрдирд▓реЛрдбред

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

рд╡реИрд╕реЗ рднреА, рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╡реЗрдмрдкреИрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реИрд╕реЗ рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИрдВ - рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ ModuleConcatenationPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдирд╛:

  • рдореИрдВ @ рд░рд┐рдЪ-рд╣реИрд░рд┐рд╕ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╢рдмреНрджрд╛рд░реНрде, рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ
  • рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП import React from 'react' рдпрд╛ import * as React from 'react' рдирд╣реАрдВ рд╣реИред рдореЗрд░реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрд▓рдЧрд╛рд╡ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ createElement рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде, рд░реЛрд▓рдЕрдк рдЬреИрд╕рд╛ рдмрдВрдбрд▓рд░ рд╣реЛрдЧрд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ)

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рдРрд╕реЗ рдмрд┐рдВрджреБ рдкрд░ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдмреНрд░реЗрдХрд┐рдВрдЧ-рдЪреЗрдВрдЬ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдПрдХрд▓ (рд╡реИрд╢реНрд╡рд┐рдХ рдпрд╛ рдЖрдпрд╛рддрд┐рдд) рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛред рдореИрдВрдиреЗ рдЗрд╕реЗ createJSXElement() рдХрд╣рд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЗрд╕реЗ createElement() рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдмрддрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рд░ рдмрд╛рдЗрдЯ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, jsx() рд╢рд╛рдпрдж рдареАрдХ рднреА рд╣реИред

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

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ jsx рд╣реЗрд▓реНрдкрд░ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмреИрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдИрдПрдордПрдЪрдУ рдЗрд╕реЗ react рдкреИрдХреЗрдЬ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдирд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдорд╛рдорд▓рд╛ - рдмрд╛рдХреА рдмрд╕ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рд╣реИред

рдпрд╣ рд╢рд╛рдпрдж рдореБрдЦреНрдп рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ ES рдореЙрдбреНрдпреВрд▓ process.env.NODE_ENV рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ dev/prod рдмрдВрдбрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

https://github.com/facebook/react/blob/d9c1dbd61772f8f8ab0cdf389e70463d704c480b/packages/react/npm/index.js#L3 -L7

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреИрд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП?

@NMinhNguyen ES рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╢рд░реНрдд рдирд┐рд░реНрдпрд╛рдд рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

process.env.NODE_ENV рдЪреЗрдХ рдЕрдзрд┐рдХ рджрд╛рдиреЗрджрд╛рд░ (рдХреЛрдб) рд╕реНрддрд░ рдкрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрдпреБрдХреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

@Andarist @milesj рдореЗрд░реЗ рд╕рдВрджреЗрд╣ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)

process.env.NODE_ENV рдЪреЗрдХ рдЕрдзрд┐рдХ рджрд╛рдиреЗрджрд╛рд░ (рдХреЛрдб) рд╕реНрддрд░ рдкрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрдпреБрдХреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ 16 рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╕реЗ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ process.env.NODE_ENV рдЪреЗрдХ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдмрд╣реБрдд рдКрдкрд░ рддрдХ рдЦреАрдВрдЪреЗ рдЧрдП рдереЗ (рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХ рд╣реЛрдиреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдХрд┐ рд╡реЗ рд╕реНрд░реЛрдд рдореЗрдВ рд╣реИрдВ, рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ ), Node.js рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?

рдмреЗрд╣рддрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ

рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИред рдпрд╣ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рддреЗрдЬреА рд╕реЗ рдмрд╛рдЗрдЯ рднреЗрдЬрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдПрдХ рдирдИ рдкреИрдХреЗрдЬрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ process.env рдЪреЗрдХ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдорд╛рдиреЛ рдпрд╛ рди рдорд╛рдиреЛ, рдиреЛрдб рдореЗрдВ process.env рдкрдврд╝рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдзреАрдорд╛ рд╣реИ!), рдЕрдм рдЖрдкрдХреЛ рдЕрдЪреНрдЫрд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ- рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рджрд░реНрд╢рдиред

рдЬреИрд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ module рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ package.json рдФрд░ ES рдмрдВрдбрд▓реЛрдВ рдХреЛ рд╕рдкрд╛рдЯ рд░рдЦрддреЗ рд╣реБрдП рдФрд░ Node.js perf рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реБрдП ESM рдХреЗ рд▓рд┐рдП dev/prod рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЬреИрд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ package.json рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ ES рдмрдВрдбрд▓реЛрдВ рдХреЛ рд╕рдкрд╛рдЯ рд░рдЦрддреЗ рд╣реБрдП рдФрд░ Node.js perf рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реБрдП ESM рдХреЗ рд▓рд┐рдП dev/prod рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЦрд╛рдореА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд▓рд╣рд╛рд▓ рдХреЛрдИ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдУрдЯреАрдУрдПрдЪ рдпрд╣ рд╕рд┐рд░реНрдл рдЯреВрд▓рд┐рдВрдЧ рдХреА рдмрд╛рдд рд╣реИ, рдЖрдЬ рднреА рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгреЛрдВ рдореЗрдВ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдФрд░ рдпрд╣ рдЖрд╕рд╛рди рд╣реИ)ред рдУрдПрдлрд╕реА рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдпрджрд┐ рдкреИрдХреЗрдЬ рджреЗрд╡/рдкреНрд░реЛрдб рдмрд┐рд▓реНрдб рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдЪреБрдирдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЯреВрд▓рд┐рдВрдЧ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП:

import Component from 'react/Component'

class MyButton extends Component{
  constructor(){
    this.state = {}
  }

  render() {
    return <button> Button <Button>
  }
}

рдЬрд╣рд╛рдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рд╕реБрдкрд░.рдХреНрд░рд┐рдПрдЯ рдПрд▓реАрдореЗрдВрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдпрд╛ рд╕реНрдЯреЗрдЯрд┐рдХ рдХрдВрдкреЛрдиреЗрдВрдЯ.рдХреНрд░рд┐рдПрдЯ рдПрд▓реАрдореЗрдВрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛ред

рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП:

import jsx from 'react/jsx'

const MyButton = () => jsx`<button> Button <Button>`;

рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдиреЛрдб рдЙрдореНрдореАрдж рд╕реЗ рдЗрд╕ рдкреАрдЖрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ https://github.com/nodejs/node/pull/18392

рд╣рдо рдпрд╣рд╛рдВ @ рд░рд┐рдЪ-рд╣реИрд░рд┐рд╕ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред

рдмрд╕ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝рдирд╛ рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ( <script type="module" src="..."> ), рдЕрд░реНрдерд╛рдд

import React from тАЬhttps://unpkg.com/[email protected]/umd/react.development.jsтАЭ;
import ReactDOM from тАЬhttps://unpkg.com/[email protected]/umd/react-dom.development.jsтАЭ;
ReactDOM.render(
  React.createElement(...),
  document.getElementById('root')
);

рдореИрдВ рдЬреЛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рдЖрдЬ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореБрдЭреЗ рд╕реАрдбреАрдПрди рд╕реЗ <script> рдЯреИрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдпреВрдПрдордбреА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА <script type="module"> рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдкрд░ рдореМрдЬреВрдж рд╣реИ рдЬреЛ рдореИрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ:

// myPage.html
<div id="myComponentRoot"></div>
<script src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script type="module" src="/assets/scripts/components/MyComponent.js"></script>

// MyComponent.js
import AnotherComponent from "/assets/scripts/components/AnotherComponent.js";
window.ReactDOM.render(
  window.React.createElement(AnotherComponent),
  document.getElementById('root')
);

// AnotherComponent.js
export default class AnotherComponent extends window.React.Component {...}

рдПрдХ рд╕реАрдбреАрдПрди рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдмрд╣реБрдд рддреЗрдЬрд╝ рдФрд░ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдорд╣рд╕реВрд╕ рдХреА рдереА рдХрд┐ рдореИрдВ рдПрдХ рдмрдВрдбрд▓рд░ рдХреЗ рдмрд┐рдирд╛ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рддреНрдпрд╛рдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдШрдЯрдХреЛрдВ (рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдпреЛрдВ, рдЖрджрд┐) рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереАред рд▓реЗрдХрд┐рди рдЕрдм рджреЗрд╢реА ES рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде, рдореИрдВ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЙрдирдХреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдкрд░ рд╣реА рдЙрдирдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдорд╛рдирд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рднреА рдореИрдВ рдПрдХ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдореЗрд░реЗ рд╕рднреА рдЖрдпрд╛рдд рдЕрднреА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

// /assets/scripts/entry.js
import React from тАЬhttps://unpkg.com/[email protected]/umd/react.development.jsтАЭ;
import React from тАЬhttps://unpkg.com/[email protected]/umd/react-dom.development.jsтАЭ;
import RelatedPosts from "/assets/scripts/components/RelatedPosts.js";
ReactDOM.render(
  React.createElement(RelatedPosts),
  document.getElementById('root')
);

// /assets/scripts/components/RelatedPosts.js
import React from тАЬhttps://unpkg.com/[email protected]/umd/react.development.jsтАЭ;
import ListItem from "/assets/scripts/components/ListItem.js"
export default class MyComponent extends React.Component {
  componentDidMount() { /* fetch some data */ }
  render() { 
    return React.createElement(
      'ul',
      {},
      this.state.items.map(item => React.createElement(ListItem, { item: item })
    )
  }
}

// /assets/scripts/components/ListItem.js
import React from тАЬhttps://unpkg.com/[email protected]/umd/react.development.jsтАЭ;
export default function ListItem(props) {
  return React.createElement('li', null, ...)
}

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рдпрд╣ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдХрд┐ рд╕реАрдбреАрдПрди рдпреВрдЖрд░рдПрд▓ рд╣рд░ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рд▓реЗрдХрд┐рди рдЯреНрд░реЗрдбрдСрдл рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рдЙрд╕ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓рдирд╛/рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЦреЛрдЬ/рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдмрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

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

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ: рдЕрдЧрд░/рдЬрдм рд░рд┐рдПрдХреНрдЯ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдбреЙрдХреНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд┐рдЦрд╛рддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдФрд░ рдЙрд╕рдХреЗ рдШрдЯрдХ рдореЙрдбрд▓ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЦреБрдж рдХреА рдлрд╝рд╛рдЗрд▓ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рджреЗрд╢реА <script type="module"> , рдПрдХ рд╕реАрдбреАрдПрди (рдпрд╛ рдЖрдкрдХреА рдЕрдкрдиреА рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐) рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдФрд░ рдЕрдкрдирд╛ рдмрдВрдж!

рдЕрдм, рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╣рд┐рдд рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ ESM рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред ESM рдЕрдм рднрд╡рд┐рд╖реНрдп рдХрд╛ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рдлреИрдХреНрдЯреЛ-рдорд╛рдирдХ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд░рд╣реЗрдВ рдХрд┐ рдорд╛рдирдХреАрдХреГрдд рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдбрд┐рдлреИрдХреНрдЯреЛ-рдорд╛рдирдХ рд╡реЗрдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдПред

import * as React from 'react';
import * as ReactDOM from 'react-dom';

рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд╣реИ, рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдФрд░ рдмрдВрдбрд▓рд░ рдЖрдпрд╛рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред

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

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛

@TrySound рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдХреНрдпрд╛ рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рд╣реИ?

рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

@TrySound
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдЖрдкрдХреА рд╢рд╛рдЦрд╛ https://github.com/TrySound/react/tree/react-is-esm рдорд┐рд▓ рдЧрдИ рд╣реИ , рдФрд░ рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рдерд╛ред react-dom рднреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╕рдореБрджрд╛рдп рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЪрд░реНрдЪрд╛ рдХреАред
https://discuss.reactjs.org/t/es6-import-as-react-vs-import-react/360/

рдХреГрдкрдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ ES6 рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рддрдп рдХрд░реЗрдВ, рдФрд░ рдЬрд▓реНрдж рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВред

@kenokabe рд╣рдо рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИрдВред рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдордЬрдмреВрд░ рди рдХрд░реЗрдВред рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдпреЛрдЬрдирд╛ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдбреЙрдХреНрд╕ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд░ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

@TrySound рдХреНрд╖рдорд╛ рдХрд░реЗрдВред
рдореЗрд░рд╛ рдорддрд▓рдм рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдореБрдЦреНрдп рдЙрд▓реНрд▓реЗрдЦ рд╣реИ

рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рд╕реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп ES рдирд┐рд░реНрдпрд╛рдд рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рддреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рднреА рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдкреЗрдбрд╝ рдЭрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдФрд░, рдЬрд┐рд╕ рджрд┐рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдХрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдирд┐рд░реНрдгрдп рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕ рдкрд░ рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ...

рдореИрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ v4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рдореЗрд░рд╛ рдЖрдИрдбреАрдИ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ (рд╡реЗрдмрд╕реНрдЯреЙрд░реНрдо) рдореБрдЭреЗ import * as React from 'react'; рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдореЗрд░реЗ рд╕рд╣рдХрд░реНрдореА рдореБрдЭреЗ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ import React from 'react'; рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╡рд╣ рдХреБрдЫ рдмрдХрд╡рд╛рд╕ рдХрд╣ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕реА рддрд░рд╣ рдореБрдЭреЗ рдпрд╣ рдзрд╛рдЧрд╛ рдорд┐рд▓рддрд╛ рд╣реИред

рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рдмрд╛рд╣рд░, рдореИрдВ рдЗрд╕рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдорд╛рдг рдЖрдХрд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ (рд░рд┐рдПрдХреНрдЯ 16.8.1 рдХреЗ рд╕рд╛рде):

import * as React from 'react'; : 6,618,723 рдмрд╛рдЗрдЯреНрд╕
import React from 'react'; : 6,619,077 рдмрд╛рдЗрдЯреНрд╕

рддреЛ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд░ рдереЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдорд╛рдореВрд▓реАред (рдиреЛрдЯред рдореИрдВрдиреЗ propTypes рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рд╣реИ)

рдЕрдЧрд░ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рд╕рд╣реА рд╣реИ, рддреЛ рдпрд╣ import * as React from 'react'; рд╣реЛрдиреЗ рдХрд╛ рдкрдХреНрд╖ рд╣реЛрдЧрд╛, рд╣реИ рдирд╛?! рдХреНрдпреЛрдВрдХрд┐ (1) рд╣рд╛рдБ, рдЗрд╕рдиреЗ рдХреБрдЫ рдЖрдХрд╛рд░ рдмрдЪрд╛рдпрд╛; (2) рдИрдПрд╕рдПрдо рдПрдХ рдорд╛рдирдХреАрдХреГрдд рддрд░реАрдХрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдФрд░ рд╕реАрдЬреЗрдПрд╕ рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдореИрдВ рдЖрдЬ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@leoyli рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рд╣рд╛рдБред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рди рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рджреЛрдиреЛрдВ рд╣реЛрдВрдЧреЗред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рд▓рд┐рдпрд╛, рдХреБрдЫ рд╣рдж рддрдХ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдм рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (unpkg.com рд╕реЗ рд╕реАрдзреЗ рдЖрдк рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ рд╡реВ, рд╣рд╛рдЗрдкрд░рдПрдк рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) . рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВ рд▓реЗрдХрд░ рдЖрдпрд╛, рдХреБрдЫ рднреА рдлреИрдВрд╕реА рдирд╣реАрдВ, рдмрд╕ рдПрдХ рд╣рд╛рде рд╕рдВрдкрд╛рджрд┐рдд рдЙрдордб:

https://github.com/lukejacksonn/es-react

рдПрдХ ES6 рдореЙрдбреНрдпреВрд▓ React рдФрд░ ReactDOM . рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ рд░реАрдбрдореЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХ рдкреАрдУрд╕реА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдмрд┐рд▓реНрдб рдХреЗ рдЙрддрд░рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ 16.8.3 рдмрд┐рд▓реНрдб рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣реБрдХ, рд╕рд╕реНрдкреЗрдВрд╕, рдЖрд▓рд╕реА рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдХреЗ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

import { React, ReactDOM } from 'https://unpkg.com/es-react'

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

@lukejacksonn рд╣рдо рдЙрддреНрдкрд╛рджрди рдкрд░ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдЕрд▓рдЧ рдерд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯрдбреЙрдо рдХреЗ рдпреВрдПрдордбреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдФрд░ рдпрд╣ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рдПрдХ рдмреВрдВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк https://github.com/wearespindle/react-ecmascript рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ unpkg https://unpkg.com/react-ecmascript/ рд╕реЗ рднреА рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@ PM5544 рдУрд╣ рд╡рд╛рд╣ .. рдпрд╣ рдореЗрд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ! рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╕рд╛рдорд╛рди @PM5544ред рдХрд┐рд╕реА рджрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрд╝реЗрдмрд┐рдпрд╛ рдореЗрдВ рдЕрддрд┐рдерд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реЛ?
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХ рдЕрдкрдирд╛рдпрд╛ рд╣реИ, рдЬреЛ рдпреВрдПрдирдкреАрдХреЗрдЬреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдХрд┐рд╕реА рдХреЛ рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ рдпреВрдПрдирдкреАрдХреЗрдЬреА рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рдкрддрд╛ рд╣реИ?

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдЗрд╕реЗ рдЬреВрди рдореЗрдВ рднреА рд░рд┐рдПрдХреНрдЯ рдиреЙрд░реНрд╡реЗ рдореЗрдВ рдПрдХ рднрд╛рд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдБ!

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

рдЗрд╕реЗ рдкрд╣рд▓реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ https://github.com/facebook/react/pull/15037

@TrySound рдареАрдХ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЙрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рднреЗрдЬ рджрд┐рдпрд╛ рд╣реИред

рдЬрдм рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

// react/index.js
import * as React from "./react";
export { React as default }
export * from "./react";

// react/react.js
export function createElement() {}
...

рдпрд╣ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рд╡реЗрдмрдкреИрдХ 5 рдФрд░ рд░реЛрд▓рдЕрдк рдореЗрдВ рдЗрди рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

import React from "react";

React.createElement(); // <- only `createElement` export is used

рдореИрдВ 1.5 рд╕рд╛рд▓ рд╕реЗ рд░реЛрд▓рдЕрдк рдЧрдЯрд░ рдЪреИрдЯ рдореЗрдВ рд╣реВрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рд╣рд░ 2 рд╣рдлреНрддреЗ рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ ...

BTW, @lukejacksonn рдиреЗ es-react fork рдкрд░ рдПрдХ рдЬрдмрд░рджрд╕реНрдд рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

BTW, @lukejacksonn рдиреЗ es-react fork рдкрд░ рдПрдХ рдЬрдмрд░рджрд╕реНрдд рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрдлрдмреА рдЯреАрдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдореИрдВ рдпрд╣ рднреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрдмрд╛рд╡ рдкреИрджрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @lukejacksonn рдЦреБрдж рднреА рдРрд╕рд╛ рд╣реА рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореВрд▓ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЕрдкрдирд╛ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рд╕реЗ рдХреБрдЫ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд░реБрдЪрд┐ рд╣реИред

рдореБрдЭреЗ рднреА рд╡рд╛рдХрдИ рдпрд╣реА рдЙрдореНрдореАрдж рдереАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдкреИрдХреЗрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рд╕реЗ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдорд┐рд▓рд╛ (@threepointone рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛)ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдлреЙрд░реНрдорд┐рдбреЗрдмрд▓ рдореЗрдВ рдПрдХ рд╕рд╣рдпреЛрдЧреА рдиреЗ рдореБрдЭреЗ рдкреИрдХреЗрдЬ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЬреЛ рд╣рд░ рдмрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рд╣рд╛рде рд╕реЗ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рд╛рдл рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдЧрд╛ рдЕрднреА рддрдХ рдРрд╕реЗ рд╣реА рд░рд╣реЛред рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ!

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

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдм рдЕрджреНрдпрддрди ES-рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ @pica/react , рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА v16.13.x рдкрд░ рд╣реИ
https://www.npmjs.com/package/@pika/react
https://www.npmjs.com/package/@pika/react -dom
https://github.com/pikapkg/react

рджреВрд░ рдХреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╢рд╛рдпрджред

рдареАрдХ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╡рд┐рд╖реНрдп рдореЗрдВред рдХреНрдпрд╛ рдпрд╣ рдЕрдм рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реИ?

@gaearon рдирд┐рд░реНрдпрд╛рдд рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдмрдирд╛рдо рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд) рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реЛрдзрдХ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рд╕рдореБрджрд╛рдп рдЖрдкрдХреА рдХреБрдЫ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдирд┐рд░реНрдгрдп рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ: #18102ред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдм рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдкрдбреЗрдЯ рджреВрдВрдЧрд╛ред

рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ

рд╣рдорд╛рд░реА рдЕрдВрддрд┐рдо рдпреЛрдЬрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреА рд╣реИ:

import { useState } from 'react';

рдЙрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:

import React from 'react'; // no

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рд╢реЛрд░ рд╣реИ:

import * as React from 'react';

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХрд┐рдХрд░ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ React рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЦрд╛рд╕ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

JSX рдСрдЯреЛ рдЖрдпрд╛рдд

рдЖрдЬ рд▓реЛрдЧ React рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЬреНрдпрд╛рджрд╛рддрд░ JSX рд╣реИред рд▓реЗрдХрд┐рди @lunaruan рдирдП JSX

рддреЛ рдЖрдк рдЗрд╕рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ:

import React from 'react';
import { useState } from 'react';

function Button() {
  const [pressed, setPressed] = useState(false)
  return <button />
}

рдЗрд╕рдХреЗ рд▓рд┐рдП:

import { useState } from 'react';

function Button() {
  const [pressed, setPressed] = useState(false)
  return <button />
}

JSX рд╣реБрдб рдХреЗ рддрд╣рдд рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдЖрдпрд╛рдд рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП React рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рд╕рд╣рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдЙрдард╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЙрдирдХреА рдЙрддрдиреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓

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

рддреЛ рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рд╕реЛрдЪ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдИрдПрд╕рдПрдо рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдИрдПрд╕рдПрдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдХреЛрдИ рд╕реАрдЬреЗрдПрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ - рдпрд╛ рдПрдХ рд╕рдВрдЧрдд рд╡рд┐рд░рд╛рд╕рдд рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрд▓рдЧред рдпрд╣ рд░рд┐рдПрдХреНрдЯ 17 рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ 18 рдореЗрдВ рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рдПрдХреНрдЯ 19 рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

@pika/react рдХреЗ ESM рдмрд┐рд▓реНрдб рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, https://github.com/esm-bundle/react рдФрд░ https://github.com/esm-bundle/react-dom рджреЗрдЦреЗрдВред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреЛрдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдЕрдВрджрд░ import React from 'react'; рдХреЛ рдПрдХ рдкреВрд░реНрдг рд╕реАрдбреАрдПрди рдпреВрдЖрд░рдПрд▓ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдФрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рднреА рдХреЛрдИ рдирдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд╡рдд: рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдореИрдиреБрдЕрд▓ рдЪрд░рдгреЛрдВ рдХреЗред

рдХреЛрдб рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: https://codesandbox.io/s/gifted-roentgen-qcqoj?file=/index.html

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рдЪреБрдиреМрддреА рджреА рд╣реИ рдХрд┐ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдкреВрд░рд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрджрд▓рд╛рд╡ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЖрдк https://github.com/reactjs/rfcs/pull/38 рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдХреЛ рднреА рд╡реНрдпрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЖрдкрдХреЗ рдорди рдореЗрдВ рдерд╛, рдпрд╛ рдЖрдк рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ?

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХрд┐рдХрд░ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рдРрд╕рд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдЬрдм рддрдХ рдЯреАрдПрд╕ рдмреЗрдмреЗрд▓ рдХреЗ рдЗрд╕ рдирдП рдЬрд╛рджреБрдИ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рди рд▓реЗрддрд╛, рддрдм рддрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╣реА рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдХреНрдпрд╛ рд╣реИред

JSX рд╣реБрдб рдХреЗ рддрд╣рдд рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдЖрдпрд╛рдд рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджрд╛рдпрд░реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

s/JSX/рдирдпрд╛ рдмреЗрдмреЗрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ jsx рдкреНрд▓рдЧрдЗрди/. JSX рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдРрд╕рд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдЬрдм рддрдХ рдЯреАрдПрд╕ рдмреЗрдмреЗрд▓ рдХреЗ рдЗрд╕ рдирдП рдЬрд╛рджреБрдИ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рди рд▓реЗрддрд╛, рддрдм рддрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╣реА рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдХреНрдпрд╛ рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдЗрд╕ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЕрд╡рдЧрдд рд╣реИ, рдФрд░ рдЗрд╕реЗ https://github.com/microsoft/TypeScript/issues/34547 рдореЗрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

s/JSX/рдирдИ рдмреЗрдмрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ jsx рдЯреНрд░рд╛рдВрд╕реНрдлрд╝реЙрд░реНрдо рдкреНрд▓рдЧрдЗрди/

рд╣рд╛рдБ, рдореЗрд░рд╛ рдпрд╣реА рдорддрд▓рдм рдерд╛!

рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯрдЬ/рдЖрд░рдПрдлрд╕реАрдПрд╕#38 рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рд╡реНрдпрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред рдХреНрдпрд╛ рдпрд╣ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЖрдкрдХреЗ рдорди рдореЗрдВ рдерд╛, рдпрд╛ рдЖрдк рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ?

RFC рдХрд╛ рдХреБрдЫ рдореВрд▓ рдкрд╛рда рдкреБрд░рд╛рдирд╛ рд╣реИред NodeJS рдИрдПрд╕рдПрдо рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ .js рдХреЗ рдмрдЬрд╛рдп рдлрд╛рдЗрд▓реЛрдВ .mjs рдЕрдм, рдЬрдм рдЖрдк рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ "type" рдЖрдкрдХреЗ package.json рдореЗрдВред ( рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ )ред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрд░рдПрдлрд╕реА рдореВрд▓ рдкрд╛рда рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рддрд╛ рд╣реИ рдЬреЛ рд╕рддреНрдп рдирд╣реАрдВ рд╣реИ:

ESM рдХреЛрдб .mjs рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@frehner рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдИрдПрд╕рдПрдо рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ рдХреЗ рдИрдПрд╕рдПрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд/рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред @gaearon рдиреЗ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдЕрдВрддрддрдГ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЪрд░рдг 4 рддрдХ рд╣рдорд╛рд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИред

| | рдЪрд░рдг 1 | рдЪрд░рдг 2 | рдЪрд░рдг 3 | рдЪрд░рдг 4 |
| - | -------- | -------- | -------- | ------- |
| рдИрдПрд╕рдПрдо рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛ рдЪреБрдХреА рд╣реИред. | тЬФя╕П | тЬФя╕П | тЬФя╕П | тЬФя╕П |
| package.json "module" | | тЬФя╕П | тЬФя╕П | тЬФя╕П |
| рд╡реЗрдмрдкреИрдХ/рд░реЛрд▓рдЕрдк рдИрдПрд╕рдПрдо 1 , 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ | | тЬФя╕П | тЬФя╕П | тЬФя╕П |
| package.json "exports" | | | тЬФя╕П | тЬФя╕П |
| package.json "type" | | | тЬФя╕П | тЬФя╕П |
| NodeJS рдИрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ | | | тЬФя╕П | тЬФя╕П |
| рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ? | | | | тЬФя╕П |
| рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдЪрд▓рд╛ рдЧрдпрд╛? | | | | тЬФя╕П |
| рдЖрдпрд╛рдд рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди | | | | |
| mjs рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди | | | | |

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

@joeldenning рдЪрд░рдгреЛрдВ рдХрд╛ рдХрдард┐рди рд╕рдордп рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдордп-рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдпрд╛ рд╡реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдХреА рдЪреМрдХрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ? рдХреНрдпрд╛ require('react') рдЕрднреА рднреА рддреАрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдЪрд░рдгреЛрдВ рдХрд╛ рдХрдард┐рди рд╕рдордп рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдордп-рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдпрд╛ рд╡реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдХреА рдЪреМрдХрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?

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

рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ('рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛') рдЕрднреА рднреА рдЪрд░рдг 3 рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рд╣рд╛рдБ рдореИрдВ рдпрд╣реА рд╕реЛрдЪрддрд╛ рд╣реВрдБред https://nodejs.org/api/esm.html#esm_dual_commonjs_es_module_packages рдФрд░ https://nodejs.org/api/esm.html#esm_package_entry_points рджреЗрдЦреЗрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореИрдВ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рд╕рдВрдХреНрд░рдордг рдкрде рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ "рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред" рд╢рд╛рдпрдж рд╡реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЕрдВрддрд┐рдо рд╢рдмреНрдж рд╣реИрдВ

рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг, рдпрд╣рд╛рдБ рд╣рдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЯрд╛рд░рдмреЙрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

node_modules/react/
  cjs/
    react.development.js
    react.production.min.js
    react.profiling.min.js
  umd/
    react.development.js
    react.production.min.js
    react.profiling.min.js
  esm/
    react.development.js
    react.production.min.js
    react.profiling.min.js
  index.js

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ package.json рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:

{
  "type": "module",
  "main": "index.js",
  "module": "esm/react.development.js",
  "exports": {
    "import": "./esm/react.development.js",
    "require": "./cjs/react.development.js"
  }
}

^ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдФрд░ рд╕рд┐рджреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдареЛрд╕ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рддреЛ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЦрддрд░реЗ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреЗрдЯрдлреБрд▓ (рд╣реБрдХ) рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд░рд╛рдЬреНрдп рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╛ рддреЛ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреА рд╕реАрдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╕реАрдЬреЗрдПрд╕ рдФрд░ рдИрдПрд╕рдПрдо рджреЛрдиреЛрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╢рд╛рдпрдж .json рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рджреЛрдиреЛрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рд╕реЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВ (рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 100% рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг)ред

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдЬреЛрдбрд╝рдХрд░ рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд░рдг 1 рдореЗрдВ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдЕрднреА рднреА 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рд╖рдп рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИред рд╕рд╛рде рд╣реА, рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдХреА рдЪреМрдХрд┐рдпреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЪрд░рдг 3 рдХреЛ рдХреЗрд╡рд▓ рддрднреА рд╢рд┐рдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм exports рдкрд╛рд╕ рдмрдВрдбрд▓рд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд░реНрдерди рд╣реЛ, рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЦрддрд░реЗ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреЗрдЯрдлреБрд▓ (рд╣реБрдХ) рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд░рд╛рдЬреНрдп рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, рдореИрдВрдиреЗ рдЗрд╕реЗ ( рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА ) рдирд╣реАрдВ рдорд╛рдирд╛ рдерд╛ред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╢рд╛рдпрдж CJS/ESM рдмрд┐рд▓реНрдб рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдпрд╛ рд╢рд╛рдпрдж ESM рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреВрд░реА рдкреНрд░рддрд┐ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ ESM рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ CJS рдмрд┐рд▓реНрдб рдореЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдЬреЛрдбрд╝рдХрд░ рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд░рдг 1 рдореЗрдВ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ? рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред

https://github.com/facebook/react/blob/ef22aecfc52cdf0d7cedc723c590719c009c2a64/packages/react/index.js#L39

https://github.com/facebook/react/blob/ef22aecfc52cdf0d7cedc723c590719c009c2a64/packages/react/index.js#L39

рдореБрдЭреЗ рдЕрднреА рднреА 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рд╖рдп рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИред рд╕рд╛рде рд╣реА, рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдЪреМрдХрд┐рдпреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЪрд░рдг 3 рдХреЛ рдХреЗрд╡рд▓ рддрднреА рд╢рд┐рдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдкрд╛рд╕ рдмрдВрдбрд▓рд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд░реНрдерди рд╣реЛ, рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдЪрд░рдг 3 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдордд - рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдерд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ package.json рдирд┐рд░реНрдпрд╛рдд рдЬреЛрдбрд╝рдирд╛ рдЕрдХреНрд╕рд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд░рд╣рд╛ рд╣реИред рдФрд░ рд╡рд┐рд╖рдп рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИред рдПрдХ рдмрд╛рдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЪрд░рдг 3 рдФрд░ 4 рдХреЗ рдХреНрд░рдо рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╡реЗрдмрдкреИрдХ, рд░реЛрд▓рдЕрдк, рдиреЛрдбрдЬ рдЖрджрд┐ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдмрд╣реБрдд рдЧрд╣рди рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдо рддреБрдЪреНрдЫ рд╣реИ - рдмрд╕ рдпрд╣ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рд╕рдВрднрд╡рддрдГ рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрдХреНрд░рдордг рдорд╛рд░реНрдЧ рд╣реИ :)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ? рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред

рдЖрд╣ - рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ export default рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдмрд▓ рдкрдВрдХреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрдВрдбрд▓рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдЬрдВрдЧрд▓реА рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рд▓реЗрдХрд┐рди default рдкреНрд░рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд╣реА рдИрдПрд╕рдПрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЙрди рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝реЛред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

рд╣рд╛рдБ, рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБред рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреАрдЖрд░ "рдмреБрд░рд╛ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛," рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред

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

рдПрдХ рд╕рд╡рд╛рд▓ рдпрд╣ рднреА рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕/рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдмрд┐рд▓реНрдб рдХреА рд╕реНрдЯреЗрдЯрдлреБрд▓ рдкреНрд░рдХреГрддрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

рдЕрдЪреНрдЫреЗ рдЕрдВрдХред рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ export default React рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреАрдЖрд░ рдХреБрдЫ рднреМрд╣реЗрдВ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣ рдЧрдВрддрд╡реНрдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рдПрдХ ESM рдмрд┐рд▓реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ export default рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП, import React from 'react'; рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрдо рд╣реИ рдХрд┐ рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ "рд╣рдо рдЬрд╣рд╛рдВ рд╣реИрдВ рдЙрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛" рд╣реИред рднрд╡рд┐рд╖реНрдп рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛ред

рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рднреА рд╕рдВрдмрдВрдзрд┐рдд - рдЪрд░рдг 3 рдФрд░ 4 рдЙрд╕реА рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЪрд░рдг 3 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ 16 рд░рд┐рд▓реАрдЬ рдореЗрдВ рднреА рдШреБрд╕ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрдзрд┐рдХ рдкреЗрдЪреАрджрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЙрд╕ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред

рдПрдХ рд╕рд╡рд╛рд▓ рдпрд╣ рднреА рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕/рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореИрдВрдиреЗ рдЕрдирджреЗрдЦреА рдХреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмрдВрдбрд▓рд░ рдФрд░ рдиреЛрдбрдЬреЗрдПрд╕ рджреЛрдиреЛрдВ рдореЗрдВ рдИрдПрд╕рдПрдо рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╢реЛрдз рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдореГрдд рдкреНрд░рд╕реНрддрд╛рд╡ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдЬреАрд╡рд┐рдд рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ :)

рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдмрд┐рд▓реНрдб рдХреА рд╕реНрдЯреЗрдЯрдлреБрд▓ рдкреНрд░рдХреГрддрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдорд╛рдирд╛ред рдПрдХ рдмрд╛рдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдмрд┐рд▓реНрдб рдХреА рд╕реНрдЯреЗрдЯрдлреБрд▓ рдкреНрд░рдХреГрддрд┐ рдХреЛ рдХреЗрд╡рд▓ рдЪрд░рдг 3 рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдЪрд░рдг 1 рдФрд░ 2 рдореЗрдВред @Andarist рдФрд░ рдореИрдВрдиреЗ рдЬреЛ рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рдП рд╣реИрдВ, рд╡реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

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

рдореБрдЭреЗ рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ "рдирд┐рд░реНрдпрд╛рдд" рдлрд╝реАрд▓реНрдб рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИ (рдореИрдВрдиреЗ рдПрдХ рдЯреВрд▓ рд▓рд┐рдЦрд╛ рд╣реИ, npx ls-exports , рдЬреЛ рдЗрд╕реЗ рдЖрд╕рд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдИрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреИрдХреЗрдЬ рд╡реИрд╕реЗ рднреА рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред

@gaearon рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛? рдпрд╣ рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рд╕реЗрд╡рд░-рдорд╛рдЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддрд░ рд╕рдХрддрд╛ рд╣реИред

CJS рдмрд┐рд▓реНрдб рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ ESM рдореЗрдВ (рдХрдард┐рди, рдЕрдирд╕реБрд▓рдЭреА) рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрднреА рдмрд╛рдХреА рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рдПрдХ рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рджрдмрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рддред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд) рдЬрд┐рд╕реЗ рдЕрднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рдПрдХ рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рджрдмрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рддред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд) рдЬрд┐рд╕реЗ рдЕрднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб)ред

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рддред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд) рдЬрд┐рд╕реЗ рдЕрднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб)ред

рдореИрдВ import React from 'react' рдХреЛ рдХреБрдЫ рдирдП рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдмрд▓реНрдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╣реБрдЖ рдерд╛ рдФрд░ рдЕрдм рдЕрдкреНрд░рдЪрд▓рд┐рдд рдИрдПрд╕рдПрдо/рд╕реАрдЬреЗрдПрд╕ рдЗрдВрдЯрд░рдСрдк рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реИ, рдлрд┐рд░ рднреА рдХреЛрдб рдХреА рд╣рдЬрд╛рд░реЛрдВ (рд▓рд╛рдЦреЛрдВ?) рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдХрд░рддреА рд╣реИрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ (рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдирд┐рд░реНрдпрд╛рдд) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдХрд╣рддрд╛ рд╣реИ "рд╣рдордиреЗ рдПрдХ рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП "рд╣рдЯрд╛рдП рдЧрдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд" рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рд╣реИред рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдореЗрдВред

рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рдИрдПрд╕рдПрдо рдХреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рдкрд╣рд▓реЗ рднреА рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/facebook/react/pull/18187 рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рд╕реЗ рднреА рдЬреБрдбрд╝рд╛ рд╣реИ)ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХреЗ рд╕рд╛рде webpack CJS <-> рдИрдПрд╕рдПрдо рдЗрдВрдЯрд░реЙрдк рдЬрд╣рд╛рдВ рдЕрдЧрд░ рдЖрдк рдХрд░ CJS рдХреЛрдб рд╣реИ require('react') рдХреНрдпрд╛ webpack рдПрдХ рдИрдПрд╕рдПрдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА react рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде, рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рд╣реИ default CJS react рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ default рд╕рдВрдкрддреНрддрд┐ (рдорддрд▓рдм рдЕрдм рдЗрд╕реЗ require('react').default )ред рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рднреА рдирд╛рдо рд╕реЗ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @TrySound рдкрд╣рд▓реЗ рднреА рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рднреА рдирд╛рдо рд╕реЗ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА?

рд╣рд╛рдВ, рдпрд╣реА рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред https://unpkg.com/browse/@esm-bundle/react @ 16.13.1/esm/react.Development.js рдХреА рдЕрдВрддрд┐рдо 40 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВ - рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдПрдХ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧрдардиред рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВред

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рднреА рдирд╛рдо рд╕реЗ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА?

рд╣рд╛рдВ, рдпрд╣реА рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред https://unpkg.com/browse/@esm-bundle/react @ 16.13.1/esm/react.Development.js рдХреА рдЕрдВрддрд┐рдо 40 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВ - рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдПрдХ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧрдардиред рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рд╕реЗрд╡рди рд╕реАрдЬреЗрдПрд╕ рдХреЛрдб рдпрд╛ рдИрдПрд╕рдПрдо рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реАрдЬреЗрдПрд╕ <-> рдИрдПрд╕рдПрдо рдЗрдВрдЯрд░рдСрдк рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

@gaearon рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛; рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдИрдПрд╕рдПрдо рд░реИрдкрд░ рдореЗрдВ рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рд╣реИ; рдореВрд▓ рдИрдПрд╕рдПрдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП import * as React from 'react' рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдЕрдм рдРрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЗрд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЪрд╛рдирдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ v17 рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рд╕реЗрд╡рди рд╕реАрдЬреЗрдПрд╕ рдХреЛрдб рдпрд╛ рдИрдПрд╕рдПрдо рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реАрдЬреЗрдПрд╕ <-> рдИрдПрд╕рдПрдо рдЗрдВрдЯрд░рдСрдк рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реАрдЬреЗрдПрд╕ рдФрд░ рдИрдПрд╕рдПрдо рджреЛрдиреЛрдВ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рд╣реИред

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

рдорд╛рдирд╛ред рдпрджрд┐ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛, рдЪрд░рдг 2 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16 рдореЗрдВ рдЪрд░рдг 1 рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 17+ рдореЗрдВ рдЪрд░рдг 2-4 рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЪрд░рдг 1, 2, рдФрд░ рд╢рд╛рдпрдж 3 рднреА рдХрд░рдирд╛ рд╣реИ ( @ljharb рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдЪреЗрдХрд░ рдЯреВрд▓ рдХреА рдорджрдж рд╕реЗ) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░рдг 2 рдмрдбрд╝рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдИрдПрд╕рдПрдо рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЪрд░рдг 1 рдЬреНрдпрд╛рджрд╛рддрд░ рд╢реБрд░реБрдЖрддреА рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЗ / рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред

рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдПред рдпрд╣ рдкреВрд░реНрдг рд╕реАрдЬреЗрдПрд╕ рдФрд░ рдИрдПрд╕рдПрдо рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд░рд╛рдЬреНрдп рдХреЛ рдХрд╣реАрдВ рдФрд░ рдЕрд▓рдЧ рдХрд░рдХреЗ рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЦрддрд░реЗ рд╕реЗ рдирд┐рдкрдЯрддрд╛ рд╣реИ ( рджреГрд╖реНрдЯрд┐рдХреЛрдг 2 )ред рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ RFC ( рджреГрд╖реНрдЯрд┐рдХреЛрдг 1 ) рдХреА рддрд░рд╣ рдПрдХ ESM рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВред

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

  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ Node.js рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ ESM рдФрд░ CommonJS рджреЛрдиреЛрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ .js ред рдпрджрд┐ рдЖрдк "type": "module" рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рднреА CommonJS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп .cjs рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  • рд╕реАрдЬреЗрдПрд╕ рдФрд░ рдИрдПрд╕рдПрдо рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд░рд╛рдЬреНрдп рдФрд░ рд╕рдорд╛рдирддрд╛ рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЦрддрд░рд╛ рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ 2 рд╕рдВрд╕реНрдХрд░рдг рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреА рдореЗрдореЛрд░реА рдлрд╝реБрдЯрдкреНрд░рд┐рдВрдЯ рднреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд░рд┐рдПрдХреНрдЯ рдПрдХ рдЫреЛрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдбреАрд▓ рдмреНрд░реЗрдХрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
  • рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЦрддрд░реЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ Component рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдЬреЗрдПрд╕ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд░рд╛рдЬреНрдп рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдЬреЗрдПрд╕/рдИрдПрд╕рдПрдо рдмрдВрдбрд▓реЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рддреЛ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ instanceof Component рдЪреЗрдХ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реИ рдЯреВрдЯрдиреЗ рдХреЗред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ Node.js рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ ESM рдФрд░ CommonJS рджреЛрдиреЛрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдЖрдк "рдЯрд╛рдЗрдк": "рдореЙрдбреНрдпреВрд▓" рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рднреА рдХреЙрдордирдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп .cjs рдлрд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рд╕рдЪ NodeJS рдХреЗ рд▓рд┐рдП (рд▓реЗрдХрд┐рди bundlers рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ), рдЗрд╕рд▓рд┐рдП рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╣реИ cjs рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ .cjs ред

рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ 2 рд╕рдВрд╕реНрдХрд░рдг рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреА рдореЗрдореЛрд░реА рдлрд╝реБрдЯрдкреНрд░рд┐рдВрдЯ рднреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИ

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдирдкреАрдПрдо рддрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЯреИрд░рдмреЙрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдордЧреНрд░ рдЖрдХрд╛рд░ред рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдмрдВрдбрд▓рд░ рдФрд░ рдиреЛрдбрдЬреЗрдПрд╕ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рд▓рд╛рддреЗ рд╣реИрдВ рдЬреЛ import / require() рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдореГрддрд┐ рдкрджрдЪрд┐рд╣реНрди рдХреИрд╕реЗ рдмрджрд▓реЗрдЧрд╛?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдШрдЯрдХ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдЬреЗрдПрд╕ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд░рд╛рдЬреНрдп рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдЬреЗрдПрд╕/рдИрдПрд╕рдПрдо рдмрдВрдбрд▓реЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ рддреЛ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдШрдЯрдХ рдЬрд╛рдВрдЪ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реИред

рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди ( 1 , 2 ) рдпрд╣ рд╣реИ рдХрд┐ NodeJS esm рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рдПрдХ ESM рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛ рдЬреЛ CJS рдХреЛрдб рдореЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реЛред рдЗрд╕ рддрд░рд╣ Component рдХреЗрд╡рд▓ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдХрднреА рднреА Node. рдЪрд░рдг 1 рдФрд░ рдЪрд░рдг 2 NodeJS рдореЗрдВ рдЬреЛ рдЪрд▓рддрд╛ рд╣реИ рдЙрд╕реЗ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ рдЪрд░рдг 3 рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ (рд╡реЗрдмрдкреИрдХ) рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡реЗрдмрдкреИрдХ 5 рдореЗрдВ exports рдлреАрд▓реНрдб рд╕рдкреЛрд░реНрдЯ рднреА рдЬреЛрдбрд╝рд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдирд╛ 2 рд╕реЗрдВрдЯ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

  • рдЗрд╕ рд╡рд░реНрдХ-рдЗрди-рдкреНрд░реЛрд╕реЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ exports рдлрд╝реАрд▓реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди Node.js рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░: https://gist.github.com/sokra/e032a0f17c1721c71cfced6f14516c62
  • Node.js рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рд╣реИрдВ:

    • рд╡реЗрдмрдкреИрдХ 5 development рдФрд░ production рд╢рд░реНрддреЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИрдВред ( process.env.NODE_ENV , рдЬрдмрдХрд┐ рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЛрдб рдХреЗ рд▓рд┐рдП рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ Node.js рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ)

    • рд╡реЗрдмрдкреИрдХ (рдФрд░ рдЕрдиреНрдп рдмрдВрдбрд▓рд░) require("esm") рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рдИрдПрд╕рдПрдо (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ require() ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрд╣рд░реА рд╕реНрдерд┐рддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡реЗрдмрдкреИрдХ рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╢рд░реНрдд рдкреЗрд╢ рдХреА рд╣реИ: module ред рдЗрд╕рдХреЗ рд▓рд┐рдП CommonJs рдФрд░ ESM рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ Node.js рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреЛрд╣рд░реА-рд░рд╛рдЬреНрдп-рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реА рдХреЛрдИ рдЕрдиреНрдп рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдкрд┐рдЫрдбрд╝реА-рд╕рдВрдЧрдд рд╕рдорд╕реНрдпрд╛ рд╣реИред

      рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛:

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

{
    "type": "commonjs",
    "main": "index.js",
    "module": "esm/wrapper.js",
    "exports": {
        ".": {
            "node": {
                "development": {
                    "module": "./esm/index.development.js",
                    "import": "./esm/wrapper.development.js",
                    "require": "./cjs/index.development.js"
                },
                "production": {
                    "module": "./esm/index.production.min.js",
                    "import": "./esm/wrapper.production.min.js",
                    "require": "./cjs/index.production.min.js"
                },
                "import": "./esm/wrapper.js",
                "default": "./cjs/index.js"
            },
            "development": "./esm/index.development.js",
            "production": "./esm/index.production.min.js",
            "default": "./esm/index.production.min.js"
        },
        "./index": "./index.js",
        "./index.js": "./index.js",
        "./umd/react.development": "./umd/react.development.js",
        "./umd/react.development.js": "./umd/react.development.js",
        "./umd/react.production.min": "./umd/react.production.min.js",
        "./umd/react.production.min.js": "./umd/react.production.min.js",
        "./umd/react.profiling.min": "./umd/react.profiling.min.js",
        "./umd/react.profiling.min.js": "./umd/react.profiling.min.js",
        "./package.json": "./package.json"
    }
}

рдИрдПрд╕рдПрдо/рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

рдЗрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ .mjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЙрдкрдХрд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП .js ред

{
    "type": "module"
}

esm/wrapper.js

рджреЛрд╣рд░реЗ рд░рд╛рдЬреНрдп рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП Node.js рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред

import React from "../cjs/index.js";
export const {
    Children,
    Component,
    ...,
    useState,
    version
} = React;
export { React as default };

рд╕реАрдЬреЗрдПрд╕/index.js

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Node.js рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм development рдФрд░ production рд╢рд░реНрддреЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред

'use strict';

if (process.env.NODE_ENV === 'production') {
  module.exports = require('./cjs/react.production.min.js');
} else {
  module.exports = require('./cjs/react.development.js');
}

esm/wrapper.development.js (esm/wrapper.production.min.js рд╕рдорд╛рди)

рджреЛрд╣рд░реЗ рд░рд╛рдЬреНрдп рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП Node.js рдХреЗ рд▓рд┐рдП рдЗрди рдЖрд╡рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм Node.js development рдФрд░ production рд╢рд░реНрддреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

import React from "../cjs/index.development.js";
export const {
    Children,
    Component,
    ...,
    useState,
    version
} = React;
export { React as default };

index.js

рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рдХреЗ рд▓рд┐рдПред

module.exports = require('./cjs/index.js');

esm/index.development.js, esm/index.production.min.js

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ exports рдлрд╝реАрд▓реНрдб, module рд╕реНрдерд┐рддрд┐ рдФрд░ production / development рд╢рд░реНрддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

/* React in ESM format */

// compat for the default exports with support for tree-shaking
import * as self from "./esm/index.development.js";
export { self as default }

рдкрд░рд┐рдгрд╛рдо

  • рд╡реЗрдмрдкреИрдХ 5: ./esm/index.development.js рдпрд╛ ./esm/index.production.min.js
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ: ./cjs/index.js
  • .mjs рд╕реЗ рд╡реЗрдмрдкреИрдХ 4: ./cjs/index.js
  • рдЕрдиреНрдп рдмрдВрдбрд▓рд░: ./esm/wrapper.js
  • Node.js (ESM): ./cjs/index.js (рдЖрд╡рд╢реНрдпрдХрддрд╛) рдпрд╛ ./esm/wrapper.js (рдЖрдпрд╛рдд)
  • Node.js (рдкреБрд░рд╛рдирд╛): ./cjs/index.js
  • Node.js (ESM + dev/prod): ./esm/wrapper.development.js рдпрд╛ ./esm/wrapper.production.min.js рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП, ./cjs/index.development.js рдпрд╛ ./cjs/index.production.min.js рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреЛрдИ esm/index.js рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдИрдПрд╕рдПрдо рдореЗрдВ рдмрдбрд╝реЗ рдЯреНрд░реЗрдб-рдСрдл рдХреЗ рдмрд┐рдирд╛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдЪреБрдирдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЙрдкрдХрд░рдг рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ESM рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ exports рдлрд╝реАрд▓реНрдб, module рд╕реНрдерд┐рддрд┐ (рджреЛрд╣рд░реА рд╕реНрдерд┐рддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг) рдФрд░ production / development рд╢рд░реНрддреЗрдВ (рд╕рд╢рд░реНрдд рдЖрдпрд╛рдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг)ред

рдЬрдм рд╡реЗ module рдлрд╝реАрд▓реНрдб рдпрд╛ exports рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдХрд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ESM рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

import { useState } from "react" рдпрд╛ import * as React from "react" рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЕрд╡реИрдз рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд▓рдВрдмреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХ рдХреЙрдордирдЬ рдореЙрдбреНрдпреВрд▓ рд╣реИред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреВрд▓рд┐рдВрдЧ рдЕрднреА рднреА рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ Node.js
рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдорд╛рдиреНрдп рд╣реИ: import React from "react" ред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реЛрдВрдЧреЗ (рдЬреИрд╕реЗ Node.js 14) рдЬрд╣рд╛рдВ рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ рдФрд░ ESM рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред

Node.js рдиреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП exports рд▓рд┐рдП development / production рд╢рд░реНрдд рдЬреЛрдбрд╝рдиреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЕрдм рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдХреЗ exports рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдорд░реНрдерди рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@ рд╕реЛрдХрд░рд╛ рд╢рд╛рдирджрд╛рд░ рдмреНрд░реЗрдХрдбрд╛рдЙрди, рдмрд╣реБрдд рдорджрджрдЧрд╛рд░, рдзрдиреНрдпрд╡рд╛рдж!

рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд╡рд╛рд▓:

Node.js рдиреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕/рдЙрддреНрдкрд╛рджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЕрднреА рднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? https://github.com/nodejs/node/pull/33171 рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ PR

[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ] рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдЙрдкрд░реЛрдХреНрдд рдкреАрдЖрд░ рдХреЛ https://github.com/nodejs/node/pull/34637 рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ 2] рдФрд░ рдЕрдм рдЗрд╕реЗ рдиреЛрдбрдЬ рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдзрдиреНрдпрд╡рд╛рдж @sokra , рд╡реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕реБрдЭрд╛рд╡ рд╣реИрдВред

рдпрд╣рд╛рдВ рд╡реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИрдВ, рдФрд░ рдпрд╣ рдирд┐рд░реНрдгрдп рддрдХрдиреАрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрдзрд┐рдХ рд░рдгрдиреАрддрд┐ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ:

рд╡рд┐рдХрд▓реНрдк 1

рд░рд┐рдПрдХреНрдЯ 17 рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдореЗрдВ export default React рдЬреЛрдбрд╝реЗрдВ, рдФрд░ import React from 'react' рд▓рд┐рдП рд╕реАрдЬреЗрдПрд╕ рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ (рд╢рд╛рдпрдж рд░рд┐рдПрдХреНрдЯ 18 рдореЗрдВ?)

рд╡рд┐рдХрд▓реНрдк 2

export default React рди рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рдПрдХ React 17 ESM рдмрд┐рд▓реНрдб рдмрдирд╛рдПрдВред

рд╡рд┐рдХрд▓реНрдк 3

рд░рд┐рдПрдХреНрдЯ 17 рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рди рдХрд░реЗрдВред (ЁЯШв) ESM рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ import React from 'react'; рд╕рдорд░реНрдерди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

рддреБрд▓рдирд╛

| | рд╡рд┐рдХрд▓реНрдк 1 | рд╡рд┐рдХрд▓реНрдк 2 | рд╡рд┐рдХрд▓реНрдк 3 |
| - | -------- | -------- | -------- |
| рдЧреИрд░-рд╕рдВрджрд░реНрднрд┐рдд рдИрдПрд╕рдПрдо рдмрд┐рд▓реНрдб | v17 | v17 | v18+ |
| package.json "рдореЙрдбреНрдпреВрд▓" (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рд┐рд▓рддрд╛ рд╣реБрдЖ рдкреЗрдбрд╝) | v17 | v18+ | v18+ |
| package.json "рдкреНрд░рдХрд╛рд░" / "рдирд┐рд░реНрдпрд╛рдд" (рдиреЛрдбрдЬреЗрдПрд╕ рдИрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) | v18+ 1 | v18+ | v18+ |

  1. package.json рдкреНрд░рдХрд╛рд░/рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрджрд┐ рд╡рд┐рдХрд▓реНрдк 1 рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 17 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд┐рдХрд▓реНрдк 1 рдХреА рдУрд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдХрд▓реНрдк 2 рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рд░реЛрдорд╛рдВрдЪрдХ рд╣реИред рд╡рд┐рдХрд▓реНрдк 3 рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдо рд░реЛрдорд╛рдВрдЪрдХ рд╣реИред рдЗрд╕ рдЬреАрдердм рдореБрджреНрджреЗ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА (рдФрд░ рд╢рд╛рдпрдж рд╢реНрд░рдо рднреА!) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╢реБрд░реБрдЖрддреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА, 3 рд╕рд╛рд▓ рдмрд╛рдж рднреА рдпрд╣ рдореБрджреНрджрд╛ рдЦреБрд▓рд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕рдХреЗ рдХреБрдЫ рднрд╛рдЧ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдЬреИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдореЗрдВрдЯреЗрди рдХрд░рдирд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХрд╛рдо рд╣реИред рддреЛ

рд░рд┐рдПрдХреНрдЯ 17 рдХреЗ рд╕рд╛рде рд╣рд╛рд▓ рдХреА рдЦрдмрд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдХрд┐рд╕реА рднреА рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП 16 рдХреЗ рдмрдЬрд╛рдп рд░рд┐рдПрдХреНрдЯ 17 рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдКрдкрд░ рджрд┐рдП рдЧрдП рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рд▓реЛрдЧреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ 17 рдореЗрдВ exports рдлрд╝реАрд▓реНрдб рдХреЛ package.json рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рд╢рд╛рдпрдж рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рднреА рдмреИрдХрдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

{
  "exports": {
    ".": {
      "development": "./esm/react.development.mjs",
      "production": "./esm/react.production.mjs",
      "node": {
        "import": "./esm/react.node.mjs",
        "require": "./index.js"
      },
      "default": "./index.js"
    },
    "./jsx-dev-runtime": {
      "development": "./esm/react-jsx-dev-runtime.development.mjs",
      "production": "./esm/react-jsx-dev-runtime.production.mjs",
      "node": {
        "import": "./esm/react-jsx-dev-runtime.node.mjs",
        "require": "./jsx-dev-runtime.js"
      },
      "default": "./jsx-dev-runtime.js"
    },
    "./jsx-runtime": {
      "development": "./esm/react-jsx-runtime.development.mjs",
      "production": "./esm/react-jsx-runtime.production.mjs",
      "node": {
        "import": "./esm/react-jsx-runtime.node.mjs",
        "require": "./jsx-runtime.js"
      },
      "default": "./jsx-runtime.js"
    },
    "./": "./"
  },
}

рд╣рдореЗрдВ рдирдП esm рдмрдВрдбрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

  • ./esm/react.development.mjs рдФрд░ ./esm/react.production.mjs рдмрдВрдбрд▓ process.env.NODE_ENV рдЪреЗрдХ рд╕реЗ рдореБрдХреНрдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:

    • рд╢рд░реНрдд рдХрд╛ рд╕рдорд╛рдзрд╛рди exports рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпрд╛рдд/рдмрдВрдбрд▓ рд╕рдордп рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    • process рдПрдХ рдиреЛрдб рдПрдкреАрдЖрдИ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ 5 рджреНрд╡рд╛рд░рд╛ _default_ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

  • ./esm/react.node.mjs process.env.NODE_ENV рдЪреЗрдХ рд░рдЦрддрд╛ рд╣реИред

    • рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдиреЛрдб рдХреА рддрд░рдл рдмрдбрд╝реЗ рдмрдВрдбрд▓ рд╣реЛрдирд╛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

    • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА --conditions CLI рдзреНрд╡рдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрд╡/рдЙрддреНрдкрд╛рдж рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    • https://nodejs.org/dist/latest-v15.x/docs/api/packages.html#packages_resolving_user_conditions

  • AFAIK рдХреЗрд╡рд▓ рд╡реЗрдмрдкреИрдХ 5 рдФрд░ рдиреЛрдб рдЕрднреА exports рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

    • рд░реЛрд▓рдЕрдк рдкрдХреНрд╖ рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд░реБрдЪрд┐ рд╣реИ: https://github.com/rollup/plugins/issues/362

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, WDYT?

https://webpack.js.org/guides/package-exports/
https://nodejs.org/dist/latest-v15.x/docs/api/packages.html

"./": "./" рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рддрд╛ рд╣реИ, рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рднреА рд░реЛрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреИрд╕реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрд╡рд░-рдореЗрдЬрд░ рдерд╛, рдЖрдк рдЙрд╕реЗ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

FWIW рдмреЗрдмреЗрд▓ рдирдП jsx рд░рдирдЯрд╛рдЗрдо рдЖрдпрд╛рдд рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ:

import { jsxs, jsx, Fragment } from 'react/jsx-runtime';

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдиреЛрдб рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдЧрд╛:

> node .\node.mjs
node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'test\node_modules\react\jsx-runtime' imported from test\node_modules\react-data-grid\lib\bundle.js
Did you mean to import react/jsx-runtime.js?
    at new NodeError (node:internal/errors:259:15)
    at finalizeResolution (node:internal/modules/esm/resolve:307:11)
    at moduleResolve (node:internal/modules/esm/resolve:742:10)
    at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:853:11)
    at Loader.resolve (node:internal/modules/esm/loader:85:40)
    at Loader.getModuleJob (node:internal/modules/esm/loader:229:28)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:51:40)
    at link (node:internal/modules/esm/module_job:50:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

exports рдЬреЛрдбрд╝рдирд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

@nstepien рдПрдХ рдкреВрд░реНрдг exports рдирдХреНрд╢рд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдореЗрд░реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рд╕реАрдЬреЗрдПрд╕ рдЗрдВрдЯрд░рдСрдк рдФрд░ рд╕рд╛рдорд╛рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреМрди рд╕рд╛ рдиреЛрдб рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрджрд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдЦреЗрд▓рддрд╛ рд╣реИред рджреЛрд╣рд░реЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЦрддрд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реАрдХ рдЬреИрд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреА рдПрдХ рдкреНрд░рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

@Andarist рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╡рд╣ рдЦрддрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдХрд░ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдПрдХ "рдирд┐рд░реНрдпрд╛рдд" рдирдХреНрд╢рд╛ рдпрд╣рд╛рдВ рдареАрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдИрдПрд╕рдПрдо рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд╕реАрдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рд╕рд╛рдЭрд╛ рдХрд░рддреА рд╣реИрдВ - рдЬрд┐рд╕реЗ рд╕рд░рд▓ рдИрдПрд╕рдПрдо рд░реИрдкрд░ рд▓рд┐рдЦрдХрд░ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рд░рд┐рдПрдХреНрдЯ рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ, рд╕рдХрд░реНрдордХ рдпрд╛ рдирд╣реАрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВ (рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рд╣реИрдВ) рдФрд░ рдЙрди рд╕рднреА рдХреЗ рдИрдПрд╕рдПрдо рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕рд┐рд░реНрдл рд╕реАрдЬреЗрдПрд╕ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк - рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдИрдПрд╕рдПрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдирд╛рдЯрдХ рдЕрднреА рднреА рд╣реИ (рдирд╛рдо, рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рджреЛрдиреЛрдВ):

  • рдиреЗрдо-рдУрдирд▓реА: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреИрдХрд╡рд░реНрдб-рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб import React from 'react' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдИрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдиреЛрдб рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдХреЗрд╡рд▓: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб import * as React from 'react' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдЯрд╛рдЗрдк-рдЪреЗрдХрд░реНрд╕ рдФрд░ рдЕрдиреНрдп рдЯреВрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рджреЛрдиреЛрдВ: рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рднреА рдореМрдЬреВрджрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреЗрдбрд╝ рдореЗрдВ рдИрдПрд╕рдПрдо рдФрд░ рд╕реАрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдИрдПрд╕рдПрдо рд░реИрдкрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рдзреЛрдЦрд╛ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддрдХрдиреАрдХ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬрдм рдЖрдк рдЕрдкрдиреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░рдгрдиреАрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ "рдмрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛"

рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдПрдХрдорд╛рддреНрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░рдгрдиреАрддрд┐ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реАрдЬреЗрдПрд╕ рдореЗрдВ рдЖрдкрдХреЗ рд╕рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рд╣реЛрдиреЗ рдФрд░ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдИрдПрд╕рдПрдо рд░реИрдкрд░ рд▓рд┐рдЦрдирд╛ред рдХреЛрдб рдЬреЛ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдкрд╣рдЪрд╛рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ , рджреЛрдиреЛрдВ рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ

jsx-runtime рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ? esm/cjs рджреЛрдиреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЖрд╡рд░рдг рдХреЗ рд╢рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдореБрдЭреЗ esm рдиреЛрдб рдореЗрдВ react/jsx-runtime рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд▓реЙрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдлреНрд░рдВрдЯрдПрдВрдб рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреБрдиреМрддреА рджреЛрд╣рд░реА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЦрддрд░реЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ: рдЗрд╕реЗ рдбрдмрд▓ рдмрдВрдбрд▓ рдЦрддрд░рд╛ рдХрд╣рддреЗ рд╣реИрдВред

ESM рдФрд░ CJS рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдФрд░ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ require рдФрд░ import рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@sokra рдХреНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдореИрдВ рдпрд╣ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдЪреВрдВрдХрд┐ cjs рдореЙрдбреНрдпреВрд▓ esm рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддрдмреНрджреАрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдЬрдм рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛ esm рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдЧрд╛ред

рдиреЛрдб рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдВрдбрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рд╡реЗрдмрдкреИрдХ 5. рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдЖрдк рдиреЛрдб рдореЗрдВ рдЪрд▓рддреЗ рд╕рдордп рдФрд░ рдмрдВрдбрд▓ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╕рдордп рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗрдмрдкреИрдХ 5 рдПрдХ рд╡рд┐рд╢реЗрд╖ "module" рд╢рд░реНрдд рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ esm/cjs (рдирд┐рд░реНрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ) рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рд╣рдо @ ljharb рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ esm рдлрд╝рд╛рдЗрд▓ рд░реИрдкрд░ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ cjs рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдЧреАред

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

hnordt picture hnordt  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

krave1986 picture krave1986  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ