рддреЛрдбрд╝рдирд╛ - рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВред рдпрд╛ рд╡рд┐рдЪрд▓рди

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, Habr├й рдкрд░ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдкрд╣рд▓рд╛ ES6 minification рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдерд╛, рджреВрд╕рд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡реЗрдмрдкреИрдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЯрд┐рдкреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ ред

рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рджреЛрдиреЛрдВ minification рдФрд░ рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП ES6 рдФрд░ ES5 рдореЗрдВ рдмрдВрдбрд▓реЛрдВ рдХреЗ рдмрдВрдЯрд╡рд╛рд░реЗ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдмрдХрд┐ рдХреБрдЫ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рдФрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ , рдЕрдиреНрдп (рд▓рдЧрднрдЧ рд╕рднреА) рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпреЛрдВрдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗред рдмрд╣реБрдд рдЬрд╝реНрдпрд╛рджрд╛ред рдФрд░ рдРрд╕рд╛ рдмрд╣реБрдд рдирд╣реАрдВ рд╣реИред

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



рд╡рд┐рдЪрд╛рд░


"рд╡рд┐рдЪрд╛рд░" рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрдВрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:

  • рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреЛрдб рд╣реИ
  • рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ "рд╡рд┐рдХрд╛рд╕" рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рддрд╣рдд рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ
  • рдФрд░ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╣рд╛рдБ рд╣реИ - рддрд╛рдХрд┐ async / рдкреНрд░рддреАрдХреНрд╖рд╛, рдЬрдирд░реЗрдЯрд░, рдХрдХреНрд╖рд╛рдПрдВ, рддреАрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЗрддрдиреЗ рдкрд░ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдХреНрд╖реНрдп: рдХреЛрд▓рд╛рд╣рд▓ рдореЗрдВ esmodules ред
рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдпрд╣рд╛рдВ рдЕрднреА рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рдмреАрдЪ рд╣реИрдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред (рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ es5 hiss рдХрд░рддреЗ рд╣реИрдВ, рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рдЖрдзреЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдорд╕рд╛рд▓рд╛)

рдФрд░ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╕реНрддрд╛рдВрддрд░рдг


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

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рддрдм:

  • рд╕рднреА js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ
  • рдПрдХ рд╕рдХреНрд░рд┐рдп рдкреНрд▓рдЧрдЗрди (рдХрд╛рдВрдЯрд╛ useBuiltins: "рдЙрдкрдпреЛрдЧ") рдХреЗ рд╕рд╛рде рдмреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддреЗрдЬрд╝ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВред
  • рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдЙрд╕рдХреА рдЬрд╝рд░реВрд░рдд рдХреА рд╕рднреА рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ (рд╢реВрдиреНрдп рд╕реЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрдЦреНрдп рдмрдВрдбрд▓ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ), рдорд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЯрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред
  • рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ swc рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдИ рдЬрд╛рдПрдЧреА, рдмрд╛рдмреЗрд▓ рдХрд╛ рдПрдХ рд░рд╕реНрдЯ рд╕рдВрд╕реНрдХрд░рдг, рдЬреЛ IE11 рдХреЛ рд╕рдордЭрдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдбреА-рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реИред рдХреЛрд▓рд╛рд╣рд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10-60 рдЧреБрдирд╛ рддреЗрдЬ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рд╣реИ __ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИред
  • terser рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдирд▓ рдСрдл (рдирд╛рдо рд╕рдВрдкреАрдбрд╝рди) рдХреЗ рд╕рд╛рде, рдЬреЛ рдлрд┐рд░ рд╕реЗ рддреЗрдЬрд╝ рд╣реИред
  • рдпрд╣ рд╕рдм рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдХрдард┐рдирд╛рдИ рд╕реНрддрд░реЛрдВ рдХреА рддреАрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХреЛрдб рдЪрд▓рд╛рдпрд╛:

  • рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1, 60 рдЕрдВрддрд┐рдо рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ (рдХреЛрдб-рд╡рд┐рднрд╛рдЬрди)ред 400 рдХрд╛ рд╕рдордп рдмрдирд╛рдПрдБред рд╡рд┐рдЪрд▓рди 30 sред
  • рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2, 1 рдЕрдВрддрд┐рдо js рдлрд╝рд╛рдЗрд▓ (30mb)ред 120 рдХрд╛ рд╕рдордп рдмрдирд╛рдПрдБред рд╡рд┐рдЪрд▓рди 10 sред
  • рдкреНрд░реЛрдЬреЗрдХреНрдЯ 3, 1 рдЕрдВрддрд┐рдо js рдлрд╝рд╛рдЗрд▓ (2mb)ред рд╕рдордп 20s рдмрдирд╛рдПрдБред рд╡рд┐рдЪрд▓рди 5 рдПрд╕ (рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдЦреЛ рдЬрд╛рддреА рд╣реИрдВ)ред

рдИрдПрд╕рдПрдо рдмрдВрдбрд▓ рд╕реЗ рдмреЛрдирд╕ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рдерд╛:

  • рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ 400kb рдмреЗрдмрд▓ / рдкреЙрд▓реАрдлрд┐рд▓ рдЦреЛ рджрд┐рдпрд╛ред рдХреБрдЫ рднреА рдирд╣реАрдВ "рдУрд╡рд░" рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд┐рдкреНрд╕ рд╡рд╣рд╛рдБ рдЯреНрд░рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ "рдПрд╕рдПрд╕рдПрдо" рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреЙрд▓рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рдЬреЗрдирд░реЗрдЯрд░, рдПрд╕рд┐рдВрдХреНрд╕ / рд╡реЗрдЯ рдФрд░ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рдХреЗ рдХрд╛рд░рдг рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 10% рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реБрдЖ
  • рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдЪрд╛рдкрд▓реВрд╕реА рдмрдврд╝рд╛ рджреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдвреАрд▓реЗ" рдмреЗрдмрд▓ рд░реВрдкрд╛рдВрддрд░рдг рдХрднреА-рдХрднреА рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдвреАрд▓рд╛ рдореЛрдб рдереЛрдбрд╝рд╛ рдЦрддрд░рдирд╛рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрдмрдХрд┐ "ES6" рдХреЛрдб "рд╕реБрд░рдХреНрд╖рд┐рдд" рд╣реИред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░:

  • рд╣рдо ES6 рдХреЛрдб рд▓реЗрддреЗ рд╣реИрдВ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ esmodule, let / const рдХреЛ рдЧрддрд┐ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП var рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)
  • рдЗрд╕реЗ ES5 рдмрдирд╛рддреЗ рд╣реИрдВ
  • рдкреЙрд▓реАрдлрд┐рд▓реНрд╕ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдлреЗрдВрдХ рджреЗрдВ
  • рдбреИрдбреАрдЬрд╝ рдкрд░ рддрд┐рддрд░ рдмрд┐рддрд░ рдХрд░рдирд╛, рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реАрдорд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдирд╛
  • рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╣реЛрд╢рд┐рдпрд╛рд░ (IE11 рдореЙрдбреНрдпреВрд▓ / рдирд╛рдорд╛рдВрдХрди рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ) рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
  • рдХрд┐рдпрд╛ - рдХрд╕реНрдЯрдо рдореАрдЯрд░ рдХреЗ 85% рдХреЗ рд▓рд┐рдП рдИрдПрд╕рдПрдо, рдЯреИрдВрдХ рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП ES5ред

рдмрд╕ред рдЬрд▓реНрджреАред рдмрд╕ рдмреЗрд╡рдХреВрдл рд╣реИред рд╣рдордиреЗ рдмрдВрдбрд▓ рдХреЛ рдбреА-рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ред рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░! рдФ - рдкрд░реЛрд╕рд╛ рдЧрдпрд╛ред

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

github.com/thekashey/devolution
рдкреБрдирд╢реНрдЪ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕рдордп, рд╡рд┐рдЪрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ swc рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрднреА-рдХрднреА рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - github.com/swc-project/swc/issues/280 , Babel рдЗрддрдирд╛ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реИ - рдЬрд╣рд╛рдБ swc рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ 20 рд╕реЗрдХрдВрдб рдореЗрдВ, рдмреИрдмрд┐рд▓ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред "рд╕рд╛рдорд╛рдиреНрдп" рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде - 5 рдмрд╛рдж рд╕реЗ - рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реИ
рдкреБрдирд╢реНрдЪ: рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рдХреНрдпреЛрдВ рд╡рд┐рдЪрд▓рди - рд╡реАрдбрд┐рдпреЛ рдпрд╣рд╛рдБ рд╣реИ ред

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


All Articles