рддреЛ рдХреЛрдгреАрдп 8 рдмрд╛рд╣рд░ рдЖрдпрд╛, рдЗрд╕рдореЗрдВ рдПрдХ рдЖрдЗрд╡реА рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди, рд╕реЗрд╡рд╛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рдЕрдВрддрд░ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рд╖реНрдХрд░рдг рд╕реНрдкрд░реНрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
Manfred Steyer рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рдерд╛: рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдПрдирдЬреА рдЕрдкрдбреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп "рдХреНрд░рд╛рдВрддрд┐ рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдХрд╛рд╕" рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд▓реЗрдЦрдХ рдХреЛрдгреАрдп 8 рдФрд░ рдХреЛрдгреАрдп CLI 8 рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг
GitHub рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд:
- рдкрд╣рд▓реЗ рдЖрдЗрд╡реА рджреЗрдЦреЗрдВ
- рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛
- рд╡рд┐рднреЗрджрдХ рд▓реЛрдбрд┐рдВрдЧ
- рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓
- ViewChild рдФрд░ ContentChild рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди
- рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ ngUpgrad
рдкрд╣рд▓реЗ рдЖрдЗрд╡реА рджреЗрдЦреЗрдВ
рдЕрдЧрд▓реА рдмрдбрд╝реА рдЦрдмрд░ рд╣реИ рдХрд┐ рдПрдВрдЧреБрд▓рд░ рд╕рдореБрджрд╛рдп рдЖрдИрд╡реА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдПрдХ рдирдпрд╛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЗрдВрдЬрди рднреА рд╣реИред рдЖрдЗрд╡реА рдХрд╛рдлреА рдЫреЛрдЯреЗ рдмрдВрдбрд▓реЛрдВ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рднреА рдХреЛрдгреАрдп рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдирд╡рд╛рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИред
рдЪреВрдВрдХрд┐ рдХреЛрдгреАрдп рдХреЗ рдХрдИ рдЖрдзрд╛рд░ рднрд╛рдЧреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдгреАрдп рдЯреАрдо рдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ: рдЖрдЗрд╡реА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореМрдЬреВрджрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдЖрдкрдХреЛ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдмрдВрдбрд▓ рдорд┐рд▓реЗрдВрдЧреЗред рдпрд╣ рдЙрджрд╛рд╕реАрди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Google рдкрд░ 600 рд╕реЗ рдЕрдзрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдВрдЧреБрд▓рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдХреА рдЕрдлрд╡рд╛рд╣ рд╣реИред
рдХреЛрдгреАрдп 8 рдХреЗ рд╕рд╛рде, рдЖрдЗрд╡реА рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдгреАрдп рдЯреАрдо рдЗрд╕ рд╕рдордп рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдЖрдЗрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рд╕рд┐рдХ рд╡реНрдпреВ рдЗрдВрдЬрди (рдЫрд╡рд┐ 1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИред

рдЕрдВрддрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж (рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ), рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдЕрднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Google рдкрд░ Angular рдЯреАрдо рдХреЗ CTO рдмреНрд░реИрдб рдЧреНрд░реАрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, ngconf 2019 рдореЗрдВ, Ivy рдЕрдВрддрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдЧрддрддрд╛ рдореЛрдб рдореЗрдВ рдкреИрдХреЗрдЬ рдЖрдХрд╛рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрдпрд░рдбреЗрд╡рд┐рд▓реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╡рд┐рд╖реНрдп рдХреЗ рдЖрдЗрд╡реА рдПрдкреАрдЖрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдореЛрдб, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдПрдкреАрдЖрдИ рдЕрднреА рднреА рдирд┐рдЬреА рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред рдЗрд╕рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: рд╡реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддреАрдХ functions рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЗрд╡реА рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк enable-ivy рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
ng new ivy-project --enable-ivy
рдпрд╣ рдХреБрдВрдЬреА CLI рдХреЛ tsconfig.app.json рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреА рд╣реИ:
"angularCompilerOptions": { "enableIvy": true }
рдЖрдЗрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 8 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдУрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:
ng serve --aot
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдПрдирдЬреА рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдгреАрдп 9 рдХреЗ рд╕рд╛рде, рдЖрдЗрд╡реА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрдм рддрдХ, рдХреЛрдгреАрдп рдЯреАрдо рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реА рд╣реИред
рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХрд▓-рдкрд┐рд░реЛрдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╕рдордп-рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ, рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдирд╛, рдЖрдорддреМрд░ рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдкрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрддреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд▓рдЧрднрдЧ рд╕рднреА рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рд╡реЗрдм рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдкрд░ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджреНрдпрдкрд┐ рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░реА рдПрдВрдЧреБрд▓рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓рдХреНрд╖реНрдп рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдирдП рд╕реАрдПрд▓рдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рддрдерд╛рдХрдерд┐рдд "
рдПрди рдХреНрд╡реАрдирд╕ рд╕рдорд╕реНрдпрд╛ " рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рд╡рд┐рдЪрд╛рд░ рдПрдХ рд╢рддрд░рдВрдЬ рдкрд░ рдПрдХ рд░рд╛рдиреА рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рд╣реИ, рдмрд┐рдирд╛ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдзрдордХреА рджрд┐рдП рдмрд┐рдирд╛ред рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐, рд╕реНрддрдВрдн рдпрд╛ рд╡рд┐рдХрд░реНрдг рджреВрд╕рд░реА рд░рд╛рдиреА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдПрдХ рд╢рддрд░рдВрдЬ рдХреА рдмрд┐рд╕рд╛рдд рдкрд░ рд╕рднреА рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдЖрда-рдкрдВрдХреНрддрд┐ рдФрд░ рдЖрда-рдХреЙрд▓рдо рд╢рддрд░рдВрдЬрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ 12 x 12 рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВред 27 x 27 рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╡рд░реНрддрдорд╛рди рд░рд┐рдХреЙрд░реНрдб рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА рд╕реБрдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдЧрдгрдирд╛ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:
ng generate worker n-queens
рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рди рдХреЗрд╡рд▓ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╣реИред рдпрджрд┐ рд╕рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдорд╛рди .component.ts рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓рд╛ рдПрдХ рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ CLI рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рднреА рдЬреЛрдбрд╝реЗрдЧрд╛ред
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛ рд╣реЛрддреЗ рд╣реИрдВ:
import nQueens from './n-queens'; addEventListener('message', ({ data }) => { const result = nQueens(data.count); postMessage(result, undefined); });
рдШрдЯрдирд╛ рдХреЛ рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдореБрдЦреНрдп рд╕реВрддреНрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдореБрдЦреНрдп рд╕реНрдЯреНрд░реАрдо рд╕реЗ рднреЗрдЬреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЧрд┐рдирддреА рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ, рдЬреЛ рд╢рддрд░рдВрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред NQueens рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, EventListener рдкреЛрд╕реНрдЯрдорд╛рд╕реЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛ рдЖрдЧред
рд╡рд░реНрдХрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
const count = parseInt(this.count, 10); const worker = new Worker('../logic/n-queens.worker', { type: 'module'
рдШрдЯрдХ рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╡рд╣рд╛рдВ рдЧрдгрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╕реАрдПрд▓рдЖрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд╣реА рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрдиреНрд╣реЗрдВ .worker.ts рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдирд╕реА
рдЬрдирд░реЗрдЯ рд╡рд░реНрдХрд░ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП tsconfig.worker.json рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рд╕реАрдПрд▓рдЖрдИ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ,
рдПрдирдЬреА рдЙрддреНрдкрдиреНрди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ tsconfig.app.json рдХреЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд░рдЦрддрд╛ рд╣реИред
рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЗрдЦрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реИред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдПрди рдХреНрд╡реАрдиреНрд╕ рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореБрдЦреНрдп рд╕реВрддреНрд░ рдФрд░ рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рджреЛрдиреЛрдВ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдк 12 x 12 рд╢рддрд░рдВрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ UI рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ, рдЬрдмрдХрд┐ рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЧрдгрдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рд╡рд┐рднреЗрджрдХ рд▓реЛрдбрд┐рдВрдЧ
рдЕрдм рддрдХ, рдпрд╣ рдкреБрд░рд╛рдиреЗ рдИрдПрд╕ 5 рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рд╣рдорд╛рд░реЗ рдкрд┐рддрд╛рдУрдВ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ IE11 рдФрд░ Google рдХреЗ рд╡реЗрдм рдХреНрд░реЙрд▓рд░ рджреЛрдиреЛрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирдпрд╛ ES 2015 рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИрдВ: рд╡реЗ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдИрдПрд╕ 5 рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЖрдо рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рдерд╛, рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рднрд╛рд╖рд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд▓рд╛рдн рдирд╣реАрдВ рдЙрдард╛ рд╕рдХреЗред
рдЕрдм рдпрд╣ рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ: рд╕рдВрд╕реНрдХрд░рдг 8 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдВрддрд░ рд▓реЛрдбрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдкреИрдХреЗрдЬ рдХреЗ рджреЛ рд╕рдореВрд╣реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ: рдПрдХ ECMAScript 5 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреВрд╕рд░рд╛ ECMAScript рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг, рдЬреИрд╕реЗ ECMAScript 2015 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд▓рд╛рднреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЕрдВрддрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реЗ рд╕реАрдорд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдКрдкрд░реА рд╕реАрдорд╛ tsconfig.json рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИ:
"target": "es2015"
рдирд┐рдЪрд▓рд╛ рдмрд╛рдЙрдВрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдВрдЧреЗ, рдЬреИрд╕реЗ рдХрд┐ рдмрд╛рдЬрд╛рд░ рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдЙрдиреНрд╣реЗрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░реНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЬреЛ рд╕реАрдПрд▓рдЖрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп рдмрдирд╛рддрд╛ рд╣реИ:
> 0.5%
last 2 versions
Firefox ESR
not dead
IE 9-11
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ IE 9-11 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде ES 5 рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, CLI рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдЪрд▓реА рд╕реАрдорд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм CLI рдПрдирдЬреА рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд▓реЗрдЧреА:

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ: рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдм рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ index.html add-on рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ: рдЬреЛ рд▓реЛрдЧ ECMAScript 5 рдкреИрдХреЗрдЬ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдиреЙрдорд┐рдиреАрдб рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, ECMAScript рд╕рдорд░реНрдерди рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЗрд╕рд▓рд┐рдП, ECMAScript 2015+ рд╕рдорд░реНрдерди рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рджреВрд╕рд░реА рдУрд░, ECMAScript 2015+ рдкреИрдХреЗрдЬ CLI рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдк = "рдореЙрдбреНрдпреВрд▓" рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдВрдЧреЗ:
<script src="main-es2015.js" type="module"></script> <script src="main-es5.js" nomodule></script>
рдПрдирдЬреА рдмрд┐рд▓реНрдб рдХреЗ рд╡рд┐рдкрд░реАрдд, рдмрд╛рдХреА рд╕реАрдПрд▓рдЖрдИ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ (!) рдИрдПрд╕ рд╕рдорд░реНрдерди рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2015 рд╣реИред рдпрд╣ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджрдХреНрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдорддреМрд░ рдкрд░ рджреВрд╕рд░реЗ рдмрд┐рд▓реНрдб рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдмрд┐рдирд╛, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓
рдкрд╣рд▓реЗ рджрд┐рдиреЛрдВ рд╕реЗ, рдХреЛрдгреАрдп рд░рд╛рдЙрдЯрд░ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЕрдм рддрдХ, рдпрд╣ рдПрдХ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рджреБрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
{ path: 'lazy', loadChildren: () => './lazy/lazy.module#LayzModule' }
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рди # рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рдкрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ; рдорд╛рди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд░реНрдЧред рдпрд╣ рд╡рд░реНрдгрди рд╢реИрд▓реА рдХреЛрдгреАрдп 8 рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди ECMAScript рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
{ path: 'lazy', loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule) }
рдирдП рд░рд┐рдХреЙрд░реНрдб рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдЕрднреА рднреА рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдПрдХ рдЬрд╛рджреВ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреВрдВрдХрд┐ рдЖрдпрд╛рдд рдХрдИ рдЖрдИрдбреАрдИ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рдорд╛рди рддреБрд░рдВрдд рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдВрдЧреЗред
ViewChild рдФрд░ ContentChild рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди
ViewChild рдФрд░ ContentChild рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрддреАрдд рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред рдпрджрд┐ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдХреНрд╡реЗрд░реА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ ngIf рдпрд╛ ngFor, рддреЛ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ ngOnInit рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдерд╛ред рдЕрдиреНрдпрдерд╛, рд╣рдо рдЙрдиреНрд╣реЗрдВ ngAfterViewInit (рдпрд╛ ContentChild рдХреЗ рд▓рд┐рдП ngAfterContentInit) рд╕реЗ рдкрд╣рд▓реЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдмрд╛рдж рдореЗрдВ DOM рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдореЗрдВ ngAfterViewChecked рдпрд╛, рддрджрдиреБрд╕рд╛рд░, ngAfterContentChecked рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪреВрдВрдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рднреНрд░рд╛рдордХ рдерд╛, рдЗрд╕рд▓рд┐рдП рдШрдЯрдХ рдХреЛ рдЕрдм рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрдХрд▓реНрдк рдХрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
@ViewChild('info', { static: false }) paragraph: ElementRef;
рдпрджрд┐ рд╕реНрдерд┐рд░ рдзреНрд╡рдЬ рд╕рддреНрдп рд╣реИ, рддреЛ рдШрдЯрдХ рдХреЗ рдЖрд░рдВрднрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдХреЛрдгреАрдп рддрддреНрд╡ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡реЗ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╕реНрдерд┐рд░: рдЧрд▓рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдирдЬреА рдЕрдкрдбреЗрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдорд╛рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ TODO рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди ViewChildren рдФрд░ ContentChildren рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЙрдирдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдЧрддрд┐рд╢реАрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдерд╛, рдирдП рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕реНрдерд┐рд░ рдХреЗ рдЕрд░реНрде рдореЗрдВ: рдЕрд╕рддреНрдпред
рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ ngUpgrad
рдЕрдм рддрдХ, AngularJS 1.X рдФрд░ рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ URL рдХреЗ рдХрд╛рд░рдг рджреЛрдиреЛрдВ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЗ рд░рд╛рдЙрдЯрд░реЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рд╣реЛрддреА рдереАред рдЗрд╕рд╕реЗ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдПрдХрд▓ URL рд╕реНрдерд╛рди рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЧрдИ рдереАред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдгреАрдп рдЯреАрдо рдиреЗ рдХреЛрдгреАрдп рд╕реНрдерд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрдгреАрдпрдЬреЗрдПрд╕ рдореЗрдВ $ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, URL рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ onUrlChange рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:
export class AppComponent { constructor(loc: Location, pLoc: PlatformLocation) { loc.onUrlChange((url) => console.debug('url change', url)); console.debug('hostname: ', pLoc.hostname); } }
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдореЗрд╢рди рд╕реЗрд╡рд╛ URL рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рдЧреЛрдВ рддрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЗрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд $ рд▓реЛрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдмреЗрд╣рддрд░ рдПрдХреАрдХреГрдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрдм AngularJS рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдкреВрд░реНрд╡реЛрдХреНрдд рдбрд╛рдпрдирд╛рдорд┐рдХ рдИрд╕реАрдПрдорд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдкреЛрд░реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдлрд┐рд░ рд╕реЗ, рдХреЛрдгреАрдп рдЯреАрдо рдиреЗ рдЕрдкрдирд╛ рд╢рдмреНрдж рд░рдЦрд╛: рдХреЛрдгреАрдп рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреБрдЫ рдХреЛрдиреЛрдВ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ Google рдХреЗ рдПрд╕рдкреАрдП рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реЛ рдЧрдпрд╛ред рд╡рд┐рднреЗрджрдХ рд▓реЛрдбрд┐рдВрдЧ рдкреИрдХреЗрдЬ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рддреЛ рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдпрд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИред рдЙрддреНрд╕рд╛рд╣реА рдЕрдм рдЖрдИрд╡реА рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ: рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдиреЛрдЯ рдХрд░реЗрдВред