Flutter: JSX-рдЬреИрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдорд╛рд░реНрдЪ 2018  ┬╖  203рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: flutter/flutter

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдкрдВрджрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред рд╕реНрдкрдВрджрди рдореЗрдВ JSX рдХреИрд╕реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдкрдардиреАрдп рдХреЛрдб рд╣реИ? рдореБрдЭреЗ рдмрд╣реБрдд рдбрд░ рд╣реИ рдХрд┐ AnglurJs рдХреЗ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ рд╣реА Flutter рдорд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

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

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

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ jsx рдкрд╕рдВрдж рд╣реИ, рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВред UI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рди рдХрд░реЗрдВред рдЖрдк рдЬреЗрдПрд╕рдПрдХреНрд╕-рдЬреИрд╕реЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдореВрд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдлрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ?

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

рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛ рд╣реИ:
https://github.com/flutter/flutter/issues/11609
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдХрд╕рд┐рдд:
https://spark-heroku-dsx.herokuapp.com/index.html
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдХреБрдЫ рд▓рд╛рдн рджрд┐рдЦрд╛рддрд╛ рд╣реИ ...


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

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

рдЕрдЧрд░ рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

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

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

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

close

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореБрдЭреЗ JSX рдЬреИрд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдореИрдВ IntelliJ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ UI рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛред

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

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ JSX рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ ... рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкреЗрдбрд╝ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдк рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рдЙрдк-рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рдЯреВрдЯ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореБрдЭреЗ JSX рдЬреИрд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдореИрдВ IntelliJ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ UI рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛред

рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ Intellij рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдмрд┐рдЯрдмрдХреЗрдЯ рдкрд░ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рднреА рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрди 'рдЯрд┐рдкреНрдкрдгреА рдПрдиреЛрдЯреЗрд╢рди' рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ 'vi' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╣рд╛рдВ рдПрдХ рдЕрд▓рдЧ рдЯрд┐рдкреНрдкрдгреА рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИ?

рдпрд╣ рд▓реЙрдХ рдбрд╛рдЙрди #11609 . рдХрд╛ рдПрдХ рдвреЛрдВрдЧ рд╣реИ
@рд╕реЗрдерд▓рд╛рдб ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЖрдкрдХреЛ IntelliJ рдФрд░ Android Studio рдореЗрдВ "рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ" рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдЪрд╛рд╣рд┐рдПред

cc @devoncarew рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдЙрд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛, рдпрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддреЗ рд╣реИрдВ: JSX рдЬреИрд╕рд╛ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ред рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпреВрдЖрдИ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛, рд╣рдорд╛рд░реЗ рдЯреВрд▓ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдЕрд╡рд╕рд░ рд╣реИред

рдпрд╣ рдбреБрдкреНрд▓реА #11609 рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдореИрдВ "рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧреНрд╕" рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдиреЛрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП @devoncarew рдпрд╛ @ mit-mit рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рдж!

@JonathanSum , рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ Android Studio 3.0 рдореЗрдВ рд╕рдорд╛рдкрди рд▓реЗрдмрд▓ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо IntelliJ 2017.3 рдпрд╛ Android Studio 3.1 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ 3.1 рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рд▓реАрдЬ рдЙрдореНрдореАрджрд╡рд╛рд░ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдФрд░ рд╣рдо рдХрд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдкрдВрджрди рдкреНрд▓рдЧрдЗрди рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

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

@zoechi - рдпрд╣ рдПрдХ рдбреБрдкреНрд▓реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдЧрд░реНрдо рд╣реЛрдХрд░ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рддреЛ рдЙрдирдХрд╛ рдЙрд╕ рдмрд╛рддрдЪреАрдд рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдПрдХ рдбреБрдкреНрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬреЗрдПрд╕рдПрдХреНрд╕ рд╕рдорд░реНрдерди (рдпрд╛ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛) рдЖрдиреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдирдпрд╛ рдзрд╛рдЧрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


@sethladd - рдХреГрдкрдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдмрдВрдж рди рдХрд░реЗрдВ; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд╕рдореБрджрд╛рдп рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдореИрдВрдиреЗ #11609 рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реЛрддрд╛ рдЕрдЧрд░ рдЗрд╕реЗ рд▓реЙрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрддрд╛ред


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

рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:

  • screen.js / screen.ts (рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ .ts рдХреЛ .js рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпрд╣ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрд░реНрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • screen.css (рдпрд╛ screen.android.css рдФрд░/рдпрд╛ screen.ios.css ) рдЬреЛ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реАрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рд▓реЗрдХрд┐рди рдКрдВрдЪрд╛рдИ, рдЪреМрдбрд╝рд╛рдИ, рд░рдВрдЧ, рдкреГрд╖реНрдарднреВрдорд┐ рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдЕрдЬреАрдм рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ, рддрддреНрд╡реЛрдВ рдФрд░ рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ TextArea.Login #Password рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрддреНрд╡ рд╢реНрд░реГрдВрдЦрд▓рд╛ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд░рд╣реЗрдЧрд╛ред
  • screen.xml (рдлрд┐рд░ рд╕реЗ рдпрд╛ screen.android.xml рдФрд░/рдпрд╛ screen.ios.xml ) - рдпрд╣ рд╕реНрдХреНрд░реАрди рд▓реЗрдЖрдЙрдЯ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ JS рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдкрдВрджрди рдХреА рддрд░рд╣); рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдПрдордПрд▓ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг:
<Page onLoad="loadme">
    <ActionBar title="Blah"><NavigationButton click="back" title="Back"/></ActionBar>
    <StackLayout>
      <Label text="Hi" id="Hi" style="color: red"/>
     <Label text="{{name}}" class="name"></Label>
     <Button text="Click Me" tap="clicker"/>
    </StackLayout></Page>

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╢рдирдмрд╛рд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЗрд╡рд▓ рдШрдЯрдХ рд╣реИ (рдпрд╛рдиреА рдпрд╣ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ); рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ XML рдкрд╛рд░реНрд╕рд░ рджреЗрдЦреЗрдВ рдХрд╛ рдкреГрд╖реНрда; рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рддрддреНрд╡ рдмрдирд╛рддрд╛ рд╣реИ; рдлрд┐рд░ рдПрдХ рдПрдХреНрд╢рдирдмрд╛рд░ рдШрдЯрдХ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдлрд┐рд░ рдкреЗрдЬ рдШрдЯрдХ рдкрд░ рдПрдХ рдмрд┐рд▓реНрдбрд░ рдЪрд╛рдЗрд▓реНрдб рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реИ; рдкреГрд╖реНрда рдШрдЯрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд┐рд▓реНрдбрд░ рдЪрд╛рдЗрд▓реНрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдмрдЪреНрдЪрд╛ рдПрдХ рдПрдХреНрд╢рдирдмрд╛рд░ рд╣реИ; рдЕрдЧрд░ рдпрд╣ рд╣реЛрддрд╛ рд╣реИ; рддреЛ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЙрдЪрд┐рдд рдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ; рдЕрдиреНрдпрдерд╛ рдмрд╛рдХреА рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛/рд╕реБрдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ "рдмрдЪреНрдЪреЗ" рдпрд╛ "рдмрдЪреНрдЪреЛрдВ" рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИред рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдмрд╣реБрдореБрдЦреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд┐рд▓реНрдбрд░рдЪрд╛рдЗрд▓реНрдб рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдЗрдЯрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╕рдорд░реНрдерди <Label>Hi</Label> рдФрд░ рдЗрд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдорд╛рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЛрдб рдХреЗ рдЙрдардиреЗ рдФрд░ рдЪрд▓рдиреЗ рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

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

рдЕрдм рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШрдЯрдХ рд╣реИ; рддреЛ рдЖрдк рдпрд╣ рд╕рдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рд╕реНрдкрдВрджрди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ); рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдмрд┐рдЫрд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред рдФрд░ рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ JS рдпрд╛ CSS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ; рддреЛ рдЖрдк рд╕реАрдПрд╕рдПрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдорддреМрд░ рдкрд░ рдЖрдк рд╕реАрдПрд╕рдПрд╕ рдЖрдзрд╛рд░рд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╣рд╛рд░реНрдб рдХреЛрдб рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

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

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

@JonathanSum рдпрд╣ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ,
рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд░рдорд╛рдЧрд░рдо рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реНрдерд╛рди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ reddit рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдмреЗрд╣рддрд░ рд╕реНрдерд╛рди рд╣реИрдВред

@cbazza - рдореИрдВ рдЕрд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдБ; рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддреЗрдВ рди рдХрд░реЗрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЪрд░реНрдЪрд╛ рдХреЛ рднрдбрд╝рдХрд╛рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рдЖрдк рдХрд┐рддрдирд╛ рднреА рдмреЗрд╡рдХреВрдл рдХреНрдпреЛрдВ рди рд╣реЛрдВ, рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╣реИрдВред

@zoechi - рдЕрд╕рд▓ рдореЗрдВ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрд┐рд╕реА рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рднреА рдЪрд░реНрдЪрд╛ рдпрд╣рд╛рдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЬрдм рдЬреЙрди рдбреЛ рдЕрдм рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рдмрд╛рдж рдЖрдП рдФрд░ рдПрдХреНрд╕рд╡рд╛рдИрдЬреЗрдб рдлреАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЛрдЬреЗ рддреЛ рд╡рд╣: +1: рдПрдХ рдореМрдЬреВрджрд╛ рдлреАрдЪрд░ рдФрд░/рдпрд╛ рдЗрд╕рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗ рд╕рдХреЗред

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

рдереНрд░реЗрдб рд▓реЙрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд╕ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВред

рдЖрдЗрдП рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ JSX рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦреЗрдВред

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

JSX рдХреЛрдб рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣рд╛ рд╣реИ !!!

@рд╕реЗрдерд▓рд╛рдб

рдЖрдЗрдП рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ JSX рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦреЗрдВред

рдареАрдХ рд╣реИ, рдореЗрд░реЗ DSX рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
https://spark-heroku-dsx.herokuapp.com/index.html

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

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

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

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

рдЖрдкрдХреЗ DSX рдмрдирд╛рдо рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдбрд╛рд░реНрдЯ рд╕реНрдирд┐рдкреЗрдЯ рд╕реЗ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ:

  1. рд╡рд┐рд╖рдпрдкрд░рдХ: рдореБрдЭреЗ рдХреЛрдИ рдорд╣рд╛рди рдкрдардиреАрдпрддрд╛ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рд╕рдорд╛рди рд╣реИ - рдпрджрд┐ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд╣реАрдВред рдбрд╛рд░реНрдЯ рдЖрдИрдбреАрдИ рдкреНрд▓рдЧрдЗрди рдСрдЯреЛ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдХреНрд▓реЗрд░реЗрдЯрд┐рд╡ рдорд╛рд░реНрдХрдЕрдк рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдХреЛ рдорд┐рд░рд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ JSX рдХреЛрдб рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдбрд╛рд░реНрдЯ рдореЗрдВ рд╡рд┐рдЬреЗрдЯ рдХреИрд╕реЗ рдирд╣реАрдВ рд╣реИрдВред

  2. <vars> . рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдЧреБрдг

@<vars>
var textStyle = {
    "textDirection": "TextDirection.ltr",
    "textAlign": "TextAlign.center",
    "overflow": "TextOverflow.ellipsis",
    "style": "new TextStyle(fontWeight: FontWeight.bold)"
};
</vars>@

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

Text рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рднреА рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдХрдИ рдЧреБрдгреЛрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рдмрдЬрд╛рдп TextStyle рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Text рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓ рдЬрд╛рдП, рдЬрд╣рд╛рдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

TextStyle рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп + рдХреЙрдкреА() рдбрд╛рд░реНрдЯ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдФрд░ рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ:

class Style {
  static const TextStyle avenirNextMedium =
      const TextStyle(
         fontFamily: 'Avenir Next', 
         fontWeight: FontWeight.w500,
      );

  static TextStyle title =
      avenirNextMedium.copyWith(
        color: ColorKit.blue, 
        fontSize: 45.0,
      );
}

new Text(
  'Hello',
  style: Style.title,
),

new Text(
  'Hello2',
  style: Style.title.copyWith(
    color: ColorKit.red,
  ),
),

рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп Container рд╕рдорд╛рди рд╢реИрд▓реА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдирд╛ рдмрд╛рд╣рд░реА рдкрд░рд┐рднрд╛рд╖рд┐рдд <vars> рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп, рдореБрдЭреЗ рдПрдХ рдкреИрдбрд┐рдВрдЧ, рдПрдХ рд╕реНрдпрд╛рд╣реА, рдПрдХ рдЗрд╢рд╛рд░рд╛ рд╢реНрд░реЛрддрд╛ рдпрд╛ рдПрдХ рдЫрд╛рдпрд╛ рднреА рдЪрд╛рд╣рд┐рдПред

рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде Container рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: Material , Padding , Center рдЖрджрд┐ред рддреЛ рдЕрдЧрд░ рдореБрдЭреЗ рдПрдХ рдмрдирд╛рдирд╛ рд╣реИ рдХрд╕реНрдЯрдо рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп "рдХрдВрдЯреЗрдирд░" рд╡рд┐рдЬреЗрдЯ рд╡реИрд╕реЗ рднреА, рдореБрдЭреЗ рдмрд╛рд╣рд░реА <vars> рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╡рд┐рдЬреЗрдЯ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рд╕реНрдкрдВрджрди рдХрд╛ "рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд┐рдЬреЗрдЯ рд╣реИ" "рдПрдХрд╛рдзрд┐рдХ рдЧреБрдг" рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

  1. рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди DSX рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХреИрд╕реЗ рдХреЛрдбрд┐рдд рдХрд░реЗрдВрдЧреЗ? рдЕрд░реНрде: рдХрд┐рд╕реА рд╢рд░реНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рд╡рд┐рдЬреЗрдЯ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдирд╛ рд╣реИред

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

    var children = <Widget>[];
    if(a) {
      children.add(wa);
    }

    var wb = Text();
    if(b) {
      wb = Padding(child: wb);
    }

    children.add(wb);

@SirComputer1 DSX рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ, рд╡рд░реНрддрдорд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдЖрдк рдЖрдЬ рд╣реИрдВ рд╡реИрд╕реЗ рд╣реА рдЬрд╛рд░реА рд░рдЦреЗрдВред

<var> рдЪреАрдЬрд╝ рдХреЗрд╡рд▓ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдХреА рдЧрдИ рдереА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреВрд░реНрдг рдбрд╛рд░реНрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ <var> рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдбрд╛рд░реНрдЯ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ '@' рдХреЗрд╡рд▓ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

    var children = <Widget>[];
    if(a) {
      children.add(wa);
    }

    // You can mix and match both
    var wb = <Text/>;
    if(b) {
      wb = Padding(child: wb);
    }

    // or
    var wb = Text();
    if(b) {
      wb = <Padding> {wb} </Padding>;
    }

    children.add(wb);

    children.add(
      <Center>
          {sayHello == true ?
             <Text ['Hello, world!']/>
          :
             <Text ['Good bye']/>
          }
      </Center>
    );

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

@escamoteur - рдореИрдВ рдПрдХ рд╕реНрдХреНрд░реВ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣рдереМрдбрд╝рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред :рдореБрд╕реНрдХреБрд░рд╛рдирд╛:

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП; рддреГрддреАрдп рдкрдХреНрд╖ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдПрдХреАрдХрд░рдгред рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд░ рдПрдХ рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд░рд╛рдЬрд╛ рд╣реИред рдХреБрдЫ рднреА рджреВрд░ рд╕реЗ рднреА рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд░реАрдм рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ; рдФрд░ рддреГрддреАрдп рдкрдХреНрд╖ рдПрдХреАрдХрд░рдгред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ https://github.com/vipulasri/Timeline-View рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реИред рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╕реНрдкрдВрджрди; рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрдЭреЗ рдХреБрдЫ рдШрдВрдЯреЗ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдПрдирдПрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреАред рджреВрд╕рд░реА рддрд░рдл рд╕реНрдкрдВрджрди рдореЗрдВ рдХреБрдЫ рдЧрдВрднреАрд░ рддрд╛рдХрдд рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдПрдирдПрд╕ рдЭрдВрдбреЗ ...

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


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

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдПрдХреНрд╕рдПрдордПрд▓ рдЖрдзрд╛рд░рд┐рдд рд░реЗрдВрдбрд░рд░ рдХреЛ рдкреАрдУрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрдВрджрди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИ; рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдмрд╛рддрдЪреАрдд рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдХрд╣рддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдХрджрдо рдХреЛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрд░ рдЯреАрдо рд╕реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдирдПрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдордореЗрдВ рд╕реЗ рдЬреЛ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА рд╢рд╛рдпрдж рдореБрдЭреЗ: рдореБрд╕реНрдХреБрд░рд╛рддреЗ рд╣реБрдП :) рдЙрди рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЪрд┐рдВрддрд╛ @sethladd -- рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдкреИрдЪ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдБ; рдХреНрдпрд╛ рдЗрд╕реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрд░ рдЯреАрдо рдореЗрдВ рдХреЛрдИ рдЗрд╕ рдХреНрд╖рдорддрд╛ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕рдордп рдмрд┐рддрд╛рдКрдВ, рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣реА рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ...

@NathanaelA рд╢рд╛рдирджрд╛рд░ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп!!!!!!! рдФрд░ рджреЗрдЦреЛ рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдЪрд┐рд╣реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ ;-) рдЖрдкрдиреЗ рд╕рдЪрдореБрдЪ рдЗрд╕реЗ рд╕рд┐рд░ рдкрд░ рд▓рдЧрд╛рдпрд╛ рд╣реИред

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

@zoech , рдирд╣реАрдВ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдореБрдЭреЗ рдореВрд▓ рдЬрд╛рд╡рд╛ рдФрд░ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдпрд╛рдж рд╣реИред рд╣рдо рдЕрднреА рднреА UI рднрд╛рд╖рд╛ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП XML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрд░реНрдХ рдФрд░ рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реИ, рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Google рд░рд┐рдПрдХреНрдЯ рдХреЗ UI рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕реНрдкрдВрджрди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдХрд╛ UI рднрд╛рдЧ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИред

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

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ jsx рдкрд╕рдВрдж рд╣реИ, рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВред UI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рди рдХрд░реЗрдВред рдЖрдк рдЬреЗрдПрд╕рдПрдХреНрд╕-рдЬреИрд╕реЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдореВрд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдлрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ?

@zoechi

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд▓реЛрдЧ рдХреБрдЫ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдкрдиреА рдЖрджрддреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫреБрдХ рд╣реИрдВ

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

@yuu2lee4

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ jsx рдкрд╕рдВрдж рд╣реИ, рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВред UI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рди рдХрд░реЗрдВред рдЖрдк рдЬреЗрдПрд╕рдПрдХреНрд╕-рдЬреИрд╕реЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдореВрд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдлрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдмреЗрд╣рддрд░реАрди рд╕рд╡рд╛рд▓ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ DSX рдкрд░ рд╕рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ JSX рдХреА рддрд░рд╣ рд╣реИ, рдФрд░ @Hixie рдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдИрдореЗрд▓ рднреЗрдЬрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ рди рд╣рд╛рде рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдХрд╣рд╛ рдЬрд╛рдП 'рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдХреНрдпрд╛ рд░реЛрдХ рд░рд╣рд╛ рд╣реИ?'

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдЗрд╕ рд╢реАрд░реНрд╖рдХ рдХреЛ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рджрд┐рд╢рд╛ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ... рдЬреЛ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ...

@cbazza

@ рд╣рд┐рдХреНрд╕реА рдиреЗ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдИрдореЗрд▓ рднреЗрдЬрд╛ ..

рддреЛ рдЖрдк рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рд▓реЛрдЧ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рднреА рдмреЛрд░реНрдб рдкрд░ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рдЕрдЧрд░ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдХреА рддрд░рд╣ рд╣реЛ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдмреНрд▓реЙрдХ рдХреНрдпрд╛ рд╣реИрдВ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рдбрд╛рд▓рддреЗ рд╣реИрдВ ... рдФрд░ рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрдВрджрди рдФрд░ рдбрд╛рд░реНрдЯ рдЯреАрдо рдиреЗ рдпреВрдЖрдИ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░рдХреГрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ ...
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдо рдЕрднреА рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рди рд╣реЛ рдкрд╛рдП, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕рдХреЗ рдпреЛрдЧреНрдп рдХрд╛рд░рдг рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдЬреЛ рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛ ... рд╡реЗ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ ... рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЛ ... рдЬреИрд╕реЗ рдЗрд╕ рдЖрджрдореА рдиреЗ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ http://mutisya.com/ рдХрд┐рдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ ... рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рд╣реИ рдХрд┐ @NathanaelA рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдиреЗ рдХреБрдЫ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрднреБрдд рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЙрдкрдХрд░рдг ... рдФрд░ рдЕрдзрд┐рдХ рджреЗрд╡реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВ ...

@MichaelSowah
рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг @NathanaelA рдиреЗ рдХрд╣рд╛:

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЪрд┐рдВрддрд╛ @sethladd -- рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдкреИрдЪ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдБ; рдХреНрдпрд╛ рдЗрд╕реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрд░ рдЯреАрдо рдореЗрдВ рдХреЛрдИ рдЗрд╕ рдХреНрд╖рдорддрд╛ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕рдордп рдмрд┐рддрд╛рдКрдВ, рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣реА рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ...

рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
(рдП) рдПрдХ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬреЛ *.dsx рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдВрджрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ *.dart рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореБрдЭреЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
(1) рдХрд┐рд╕реА рдХреЛ 'рд╡реАрдПрд╕ рдХреЛрдб' рдПрдХреАрдХрд░рдг рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ред рдореЗрд░реА рдЬрд╛рдВрдЪ рд╕реЗ рдпрд╣ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред
(2) рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрд╖рдорддрд╛ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рд╕реНрдЯреЗрдкрд┐рдВрдЧ *.dsx рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд╕реЛрд░реНрд╕рдореИрдк, рдЖрджрд┐ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдЧреАред

рдПрдХ рдмрд╛рд░ рдЙрдкрд░реЛрдХреНрдд 2 рдЖрдЗрдЯрдо рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреЗрдВрдж рдХреЛ рд▓реБрдврд╝рдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдПрдВрдб-рдЯреВ-рдПрдВрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдХреЛрдИ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛?

рддреЛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, (1) рдФрд░ (2) рдХреЛ рдлрд╝реНрд▓рдЯрд░ рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ рдЗрд╕рд▓рд┐рдП рдмрд┐рдирд╛ рд╕рдорд░реНрдерди/рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдЯрдХ рдЧрдИ рд╣реИред

@cbazza рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рддреЛ рдЪрд▓рд┐рдП рдпрд╣рд╛рдВ рд╕реНрдкрдВрджрди рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдПрдХ рдФрд░ рджреЛ рдореЗрдВ рд▓реЗрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрддреЗ рд╣реИрдВ ...

(2) рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджрд╛рдВрд╡ рдбрд╛рд░реНрдЯ рдЯреАрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рд╣реИ, рд╢рд╛рдпрдж [email protected] рдпрд╛ рдЙрдирдХреЗ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ? рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ 2 рдХрд╛ рдПрдХ рд▓рдХреНрд╖реНрдп рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рд╕рдореБрджрд╛рдп рдХреЛ рдбреАрдПрд╕рдПрдХреНрд╕ рдЬреИрд╕реЗ рдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рджреЗрдирд╛ рдерд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ @ рдПрдВрдбрд░реНрд╕-рд╕реИрдВрдбрд╣реЛрдо @ рдорд┐рдЯ-рдорд┐рдЯ рдпрд╛ @ рдорд░рд╛рд▓реЗрдл рдЖрдкрдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХреЗрдВред

@sethladd рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдХреНрдпрд╛ рдЖрдк рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╡рддрдГ рдХреЙрдкреА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рднреА рдЯреАрдо рдХреЛ рдбрд╛рд░реНрдЯ рдХрд░реЗрдВ
@cbazza рд╕реВрдЪреАрдмрджреНрдз рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░рд╡рдЪрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВред
'рд╡реАрдПрд╕ рдХреЛрдб' рдПрдХреАрдХрд░рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо 2 рд░рд╛рд╕реНрддреЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╢рд╛рдпрдж @DanTup рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗ рд╕рдХрддрд╛ рд╣реИ

рдмрд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░

рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
(рдП) рдПрдХ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬреЛ *.dsx рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдВрджрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ *.dart рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

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

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

  2. рдЖрдк рд░рдирд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣ a рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдкреИрдХреЗрдЬ рд╣реИред

@MichaelSowah
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк (1) рдФрд░ (2) рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореИрдВ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХреВрдВ?

@jonahwilliams
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдкреВрд░реНрдг рдбрд╛рд░реНрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЬрдЯрд┐рд▓ рд╣реЛрдЧреА рдФрд░ рдЕрднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (https://spark-heroku-dsx.herokuapp.com/index.html)

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

рдкреБрди: рдЖрдИрдбреАрдИ рдФрд░ рдбреАрдмрдЧрд░, рд╕рдВрднрд╡рддрдГ рдбрд╛рд░реНрдЯ 2 рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдФрд░ "рдХреЙрдорди рдлреНрд░рдВрдЯ рдПрдВрдб" рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рдЖрдк рдбреАрдПрд╕рдПрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдбрд╛рд░реНрдЯ рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдХреЙрдорди рдлреНрд░рдВрдЯ рдПрдВрдб рдФрд░ рдЙрд╕рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕реАрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

@MichaelSowah рдореИрдВрдиреЗ https://github.com/flutter/flutter/issues/15922#issuecomment -376960770 рдореЗрдВ рдбрд╛рд░реНрдЯ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реАрд╕реА рдХрд┐рдпрд╛

@NathanaelA рдХреНрдпрд╛ рдЖрдк (1) рдФрд░ (2) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯреАрдо рдХрд╛ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реИ

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

@NathanaelA рдХреЛрдИ рдЬрд▓реНрджреА рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдЪреНрдЫреЗ рд╣реИрдВ :-)

рдпрджрд┐ DSX рдХреЗрд╡рд▓ Dart + Virtual closing tag рд╣реИ рддреЛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред рдбрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рдЬреЗрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдФрд░ рдкрдардиреАрдпрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА DSX рдФрд░ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде, рд╣рдо рд╕рдм-рд╕реЗрдХрдВрдб рд╣реЙрдЯ рд░реАрд▓реЛрдб рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрдВрдЧреЗ, рдареАрдХ рд╣реИ @cbazza ?

рдирд╣реАрдВ, DSX JSX рдХреА рддрд░рд╣ рд╣реИ рдФрд░ 'рдбрд╛рд░реНрдЯ + рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ' рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬреЛ рдХрд┐ рдЖрдЬ рдЖрдк рдЕрдкрдиреЗ рдбрд╛рд░реНрдЯ рдХреЗрд╡рд▓ рд╡рд┐рдЬреЗрдЯ рдЯреНрд░реА рдФрд░ рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

DSX рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ:
https://spark-heroku-dsx.herokuapp.com/index.html

DSX рдбрд╛рд░реНрдЯ рд╣реИ рдЗрд╕рд▓рд┐рдП рдбрд╛рд░реНрдЯ рдХреЗ рд╕рднреА рд▓рд╛рдн рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред JSX рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧ рдЗрд╕реЗ рддреБрд░рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдирд╣реАрдВ, рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрдПрдВрдЧреЗ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рд╛рдорд╛рдиреНрдп *.dart рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рд╕рдм-рд╕реЗрдХрдВрдб рд╣реЙрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ рд╣реИред
рдЕрдм рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ *.dsx рдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ *.dart рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрд░реЗ рдкрд▓рдХ рдЭрдкрдХрдиреЗ рд╕реЗ рднреА рддреЗрдЬрд╝ рд╣реИ !!! рддреЛ рдпрд╣ DSX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

@JonathanSum рдХреНрдпрд╛ рдЖрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ (3.1) рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рдерд╛?

@ 14n рд╣рд╛рдВ, рдореИрдВ рдЙрди рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВред

рдПрдХ рдмрдбрд╝рд╛ рдПрдХреНрд╕рдПрдордПрд▓ рдЬреИрд╕рд╛ рд╡рд┐рдЬреЗрдЯ рдЯреНрд░реА рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдмрдбрд╝реА рдЪреАрдЬ рдХреА рддрд░рд╣ рдкрдврд╝рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдбрд╛рд░реНрдЯ, рдЬреЗрдПрд╕рдУрдПрди, рд╡рд╛рдИрдПрдПрдордПрд▓ рдпрд╛ рдЬреЗрдПрд╕рдПрдХреНрд╕ рд╣реЛред рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ JSX рд╣реА рдкрдардиреАрдпрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

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

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд DSX рдкреНрд░рд╛рд░реВрдк рдкрд░ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░рд╛рдп:

  1. рдиреЗрддреНрд░рд╣реАрди рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ - рдмрдбрд╝реЗ рдПрдХреНрд╕рдПрдордПрд▓-рдкреЗрдбрд╝ рдХреЛ рдкрдврд╝рдирд╛ рдЙрддрдирд╛ рд╣реА рджрд░реНрджрдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрдардиреАрдпрддрд╛ рд╕рдВрдмрдВрдзреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрди рдкреНрд░рдерд╛рдУрдВ рдХреЛ (рд▓рдЧрднрдЧ) рдХрд┐рд╕реА рднреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  2. рдПрдХ рдФрд░ рдбреАрдПрд╕рдПрд▓/рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ-рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ - рдбрд╛рд░реНрдЯ - рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рд▓реЗрдЖрдЙрдЯ, рд╢реИрд▓рд┐рдпреЛрдВ, рдПрдирд┐рдореЗрд╢рди, рддрд░реНрдХред рдпрд╣ html/js/jsx/ts/coffee/css/sass/scss рдХреЗ рд╕рд╛рде рд╡реЗрдм рдкрд░ рдЬреЛ рд╣реБрдЖ рдЙрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирдП рд▓реЛрдЧреЛрдВ рдФрд░ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕реНрдкрдВрджрди рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рд▓рд╛рдн рднреА рдорд╛рдирддрд╛ рд╣реВрдВред

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

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

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

рдЗрд╕ рджрд░реНрдкрдг рдкрд░ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ @pulyaevskiy рдиреЗ https://github.com/flutter/flutter/issues/15922#issuecomment -377666972 рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рд╛ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдкрдардиреАрдп рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рдореЗрдВ рдФрд░ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдирдП/рдХреЙрдиреНрд╕реНрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рдорд╛рди) рдЬреЛ рдЗрд╕реЗ рдФрд░ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ . рдПрдХ рдкреВрд░реЗ рдЕрдиреНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдмрдирд╛рдП рд░рдЦрдирд╛ рдФрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЛрдб рдХрд╛ рдПрдХ рдирдпрд╛ рд╕реЗрдЯ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ рд▓рд╛рдЧрдд рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ (рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ)ред

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

рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЗ рдмрдЬрд╛рдп, рдореБрдЭреЗ рдкрдврд╝рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХреЛрдб рдХреЗ рдмреАрдЪ рддреАрди-рддрд░рдлрд╝рд╛ рддреБрд▓рдирд╛ рджреЗрдЦрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдпрд╣ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛, рдФрд░ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рднреА рдХреЛрд╖реНрдардХреЛрдВ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдореМрдЬреВрджрд╛ рдбрд╛рд░реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЬреЛ рдХреБрдЫ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ varargs рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ child рдФрд░ children рд╕реНрдкрдВрджрди рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢реЛрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рд╢рд╛рдпрдж рд╡рд╣рд╛рдВ рд╕реБрдзрд╛рд░ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ . рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдХреБрдЫ рдЪрд░реНрдЪрд╛рдПрдВ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдмрджрд▓рдиреЗ рдпрд╛ рд╡рд┐рдЬреЗрдЯ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕реНрдЯреНрд░реЗрдХреНрдЯ рд╡рд┐рдЬреЗрдЯ рд░рд┐рдлреИрдХреНрдЯрд░ рдмрдбрд╝реА рдмрд┐рд▓реНрдб рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреА рд░рд╛рд╣ рдкрд░ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, IntelliJ рдореЗрдВ рд╕реНрдкрдВрджрди рд░реВрдкрд░реЗрдЦрд╛ рджреГрд╢реНрдп рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рдХреЛрдб рджреЗрдЦрдиреЗ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЪрдпрди рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХрд░реНрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рддрд╛рд▓рдореЗрд▓ рд░рдЦрддрд╛ рд╣реИ (рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрд╡рд░реБрджреНрдз рд╣реИ рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдЫ рд╡реАрдПрд╕ рдХреЛрдб рд╕реБрд╡рд┐рдзрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ!)ред

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

@рд╕реЗрдерд▓рд╛рдб
рд▓реАрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
@anders-sandholm @mit-mit рдпрд╛ @mraleph on . рд╕реЗ рд╡рд╛рдкрд╕ рд╕реБрдирдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ
рдбрд╛рд░реНрдЯ 2 рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдФрд░ 'рдХреЙрдорди рдлреНрд░рдВрдЯ рдПрдВрдб' рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВред
рдореИрдВ @NathanelA рдХреЗ рд╕рд╛рде рдЙрд╕ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛ред

@DanTup

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

рд╣рд╛рдБ рдЖрдк рд╕рд╣реА рд╣реИрдВред рдореЗрд░реА 'рддреБрдЪреНрдЫ, рд╕рд░рд▓ рдкрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП' рдЯрд┐рдкреНрдкрдгреА рдХреЗрд╡рд▓ рд╕рдВрдкрд╛рджрдХ рдХреЛ .dsx рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрдВрдЯреЗрд▓рд┐рдЬ рдореЗрдВ рджреЗрдЦрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреВрд░реНрдг рднрд╛рд╖рд╛ рдкрд╛рд░реНрд╕рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрдЯрд┐рд▓ рд╣реИ), рдЬрдмрдХрд┐ рд╡реАрдПрд╕ рдХреЛрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЗрдПрд╕рдПрдХреНрд╕ (рдФрд░ рдбреАрдПрд╕рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдерд╛) JSX рд╕реЗ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡)ред

рд╣рдорд╛рд░реЗ рдкреНрд░рдпреЛрдЧ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛/рджрд┐рд╢рд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
(рдП) рдПрдХ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬреЛ *.dsx рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдВрджрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ *.dart рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
https://spark-heroku-dsx.herokuapp.com/index.html

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдорджрдж рдЪрд╛рд╣рд┐рдП:
(1) рдХрд┐рд╕реА рдХреЛ 'рд╡реАрдПрд╕ рдХреЛрдб' рдПрдХреАрдХрд░рдг рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ред
(2) рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрд╖рдорддрд╛ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рд╕реНрдЯреЗрдкрд┐рдВрдЧ *.dsx рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд╕реЛрд░реНрд╕рдореИрдк, рдЖрджрд┐ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдЧреАред

@NathanaelA (2) рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдм рднреА рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдорджрдж рдХреА рдЬрд╛ рд╕рдХреЗ (1)
рдХреЛрдИ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛? @birkir @yuriy-manifold @tehfailsafe @alexkrolick @sanketsahusoft

@DanTup - рдореИрдВ JSX рдХрд╛ рд╕рдорд░реНрдердХ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ XML рдкреНрд░рд╛рд░реВрдк рдХреА рдУрд░ рдмрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

рдХреЛрдИ рднреА рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕реЗ StackLayout рд╡рд░реНрдЧ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ XML рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдпрд╣ рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рд╣реИ; рдЬреЛ рдПрдХ рдЯрди рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░реЙрдлреНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ: рддреЛ рдЖрдЗрдП рд╕реНрдкрдВрджрди рдбреЗрдореЛ рдХреЛ рджреЗрдЦреЗрдВ:
https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/gallery/home.dart#L39 -L63

<AnimationBuilder animation="{{animation}}">
   <Stack>
      <BackgroundLayer top="{{-layer.parallaxTween.evaluate(animation)}}" left=0.0 right=0.0 bottom=0.0>
          <Image src="{{layer.assetName}}" package="{{layer.assetPackage}} fit="cover" height="{{maxHeight}"}/>
      </BackgroundLayer>
   </Stack>
</AnimationBuilder>

рдЕрдЧрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред :рдореБрд╕реНрдХреБрд░рд╛рдирд╛:

@NathanaelA рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЬреИрд╕реЗ map рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛? рдпрд╣рд╛рдБ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреБрдЫ рдХреЛрдб рд╣реИ:

  Widget build(BuildContext context) {
    return new AnimatedBuilder(
      animation: animation,
      builder: (BuildContext context, Widget child) {
        return new Stack(
          children: _kBackgroundLayers.map((_BackgroundLayer layer) {
            return new Positioned(
              top: -layer.parallaxTween.evaluate(animation),
              left: 0.0,
              right: 0.0,
              bottom: 0.0,
              child: new Image.asset(
                layer.assetName,
                package: layer.assetPackage,
                fit: BoxFit.cover,
                height: _kFlexibleSpaceMaxHeight
              )
            );
          }).toList()
        );
      }
    );
  }

рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ children: _kBackgroundLayers.map(...) рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛?

JSX/DSX рдХреЗрд╡рд▓ рдЯреИрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ:

рдореЗрдВ:
<A property="a"/>
рдмрд╛рд╣рд░:
new A(property: a)

рдореЗрдВ:

<A property="a">
  <B/>
  <C/>
</A>

рдмрд╛рд╣рд░:

new A(property: a, 
children: <Widget>[
   new B(), 
   new C()
])

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

  Widget build(BuildContext context) {
    return <AnimatedBuilder
      animation={animation}
      builder={(BuildContext context, Widget child) {
        return <Stack> {
          _kBackgroundLayers.map((_BackgroundLayer layer) {
            return <Positioned
              top={-layer.parallaxTween.evaluate(animation)}
              left={0.0}
              right={0.0}
              bottom={0.0}>
              <Image.asset [layer.assetName]
                package={layer.assetPackage}
                fit={BoxFit.cover}
                height={_kFlexibleSpaceMaxHeight}
              />
            </Positioned>;
          }).toList()
        } </Stack>;
      }}
    />;
  }

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рд╡реАрдПрд╕ рдХреЛрдб/рдЗрдВрдЯреЗрд▓рд┐рдЬ рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВред +/- (рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдИрдВ рдУрд░) рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдПрдХреНрд╕рдПрдордПрд▓ рдиреЛрдбреНрд╕ рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреЛ рдЫреЛрдЯрд╛/рдмрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рд╕рд┐рд░реНрдл рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рддрд░реАрдХрд╛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ?

@JonathanSum рдпрд╣рд╛рдБ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╣реИрдВ? рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдмрд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдлрд╝реНрд▓рдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рднреА рдРрдк рд▓рд┐рдЦрд╛ рд╣реИ?
рдбрд╛рд░реНрдЯ рдХреЛ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдиреЗ рдХреЗ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдл рдбрд╛рд░реНрдЯ рд╕реЗ рднреА рдмрджрддрд░ рджрд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдореИрдВ Xamarin рдкреНрд░рдкрддреНрд░реЛрдВ рд╕реЗ рдЖрдпрд╛ рд╣реВрдВ рдЬреЛ xaml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ред рд▓реЗрдХрд┐рди рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдлрд╝реНрд▓рдЯрд░ Xaml рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдФрд░ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ рд╕рднреА рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╣рд╛рдВ рдЙрдкрд░реЛрдХреНрдд рдЬреИрд╕рд╛ рд╣реА рдХреЛрдб рдмреНрд▓реЙрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрджреНрдз рдбрд╛рд░реНрдЯ рдореЗрдВ рдФрд░ рдЧрд╣рд░реЗ рдШреЛрдВрд╕рд▓реЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдмрд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рдЧрдИ рд╣реИред
рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░/рдпрд╛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ?

Widget build(BuildContext context) =>
    AnimatedBuilder(animation: animation, builder: _buildChild);

_buildChild(BuildContext context, Widget child) {
  return Stack(
    children: _kBackgroundLayers.map((_BackgroundLayer layer) {
      final image = Image.asset(layer.assetName,
          package: layer.assetPackage,
          fit: BoxFit.cover,
          height: _kFlexibleSpaceMaxHeight);
      return Positioned(
          top: -layer.parallaxTween.evaluate(animation),
          left: 0.0,
          right: 0.0,
          bottom: 0.0,
          child: image);
    }).toList(),
  );
}

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд░реАрдм рджреЗрдЦреВрдВрдЧрд╛:

Widget build(BuildContext context) => AnimatedBuilder(
      animation: animation,
      builder: _buildChild,
    );

_buildChild(BuildContext context, Widget child) {
  return Stack(
    children: _kBackgroundLayers.map(_imageForLayer).toList(),
  );
}

_imageForLayer(_BackgroundLayer layer) {
  final top = -layer.parallaxTween.evaluate(animation);
  final image = Image.asset(
    layer.assetName,
    package: layer.assetPackage,
    fit: BoxFit.cover,
    height: _kFlexibleSpaceMaxHeight,
  );
  return PositionedImage(top: top, image: image);
}

class PositionedImage extends StatelessWidget {
  PositionedImage({this.top, this.image});
  final double top;
  final Image image;

  <strong i="10">@override</strong>
  Widget build(BuildContext context) =>
      Positioned(top: top, left: 0.0, right: 0.0, bottom: 0.0, child: image);
}

рдлрд┐рд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ:

  1. рдбрд╛рд░реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ XML/JSX рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
  2. рд╕реНрдкрдВрджрди рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ред

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ JSX рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрдардиреАрдпрддрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА? рдХреЛрдб рдореЗрдВ рдЧрд╣рд░реЗ рдШреЛрдВрд╕рд▓реЗ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдмрдирд╛рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрднреА рднреА рдЙрдиреНрд╣реАрдВ рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдбрд╛рд░реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд┐рдП рд╣реИрдВ рддрд╛рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдкрдардиреАрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

@JonathanSum @escamoteur рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдХреНрд░рд╛рдордХ рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рд╕рд╣рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдХреЙрд▓реЗрдЬрд┐рдпрдо рдмрдиреЗ рд░рд╣реЗрдВред рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рд▓ рдХреА рдЪрд░реНрдЪрд╛ рдореИрддреНрд░реАрдкреВрд░реНрдг рдФрд░ рдЙрдкрдпреЛрдЧреА рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!

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

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

@escmoteur - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рд╕рдореБрджрд╛рдп" рдкреНрд░рдпрд╛рд╕ рдХрд╣рд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрди рдХреЛрд░ рдЯреАрдо рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рдкреИрдЪ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ ... рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реЗрда рдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ; рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ... :рдореБрд╕реНрдХреБрд░рд╛рддреЗ рд╣реБрдП:

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

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

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

рдЖрдк рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
https://facebook.github.io/react-native/
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реЛрдЪ:
https://reactjs.org/docs/design-principles.html
рд╕реНрдкрдВрджрди:
https://flutter.io/tutorials/animation/

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

@JonathanSum

рдореИрдВрдиреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓реНрд╕ рд╕реЗ рдХреБрдЫ рд╕реНрдкрдВрджрди рдРрдкреНрд╕ рдмрдирд╛рдП рд╣реИрдВред рд╕реНрдкрдВрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдпрд╣ рдЬрдЯрд┐рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛрдб рдХреЗ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЯреБрдХрдбрд╝реЗ рдХреА рддрд░рд╣ рд╣реИ рдЬреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдПрдХ рдРрд╕рд╛ рдврд╛рдВрдЪрд╛ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ, рдФрд░ рдЗрд╕реЗ рдирд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдордиреБрд╖реНрдп рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред

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

рджреВрд╕рд░реА рдУрд░, рд╕реНрдкрдВрджрди рдХреЛ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╡рд┐рдЬреЗрдЯ рдХреЛ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ ...

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

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

рддрд░реНрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкреЙрдкреБрд▓рдоред

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

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрдХрд╡рд╛рд╕ рд╕рд┐рд░реНрдл рдЕрд░рд╛рдЬрдХрддрд╛ рдФрд░ рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рддрд░рд╣ рд╣реИред

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

рдЗрд╕рд▓рд┐рдП рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрдо рд╣реИред рдХреГрдкрдпрд╛ XML рдпрд╛ Xamarin рдХреА рддреБрд▓рдирд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рд╕реЗ рди рдХрд░реЗрдВред

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

рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдФрд░ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдореЗрдВ рдХреНрд░рд┐рдПрдЯ-рд╕реНрдЯреЗрдЯ

рдХреНрдпрд╛? рдирд╣реАрдВ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЧрд▓рдд рд╣реИ - рдпрд╣рд╛рдБ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдХ рдкреЗрдВрд╕рд┐рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд╕реНрдкрдВрджрди рдХреЗ рд╕рд╛рде, рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ рдкрд╛рдиреА рдПрдХ рдХрд╛рдЧрдЬ рдкрд░ рдЧрд┐рд░рдХрд░ рдкрд╛рдиреА рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░ рджреЗрддрд╛ рд╣реИред

рд╕рдЪ рдХрд╣реВрдВ рддреЛ рдпрд╣ рд╕рд╛рджреГрд╢реНрдп рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрд▓реНрдЯрд╛ рд░рд╛рдп рдмрддрд╛ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рд╣рдо рдареАрдХ рд╡рд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдпрд╣рд╛рдВ рд╢реБрд░реБрдЖрдд рдХреА рдереАред

рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрднрд┐рдирдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ ("рдЪрд▓реЛ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ") рдФрд░ рд╣рдо рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рд╡рд╛ рдФрд░/рдпрд╛ рдЕрд╕рд╣рдиреАрдп рд╣реИрдВ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХреЛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЖрдкрдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдВ рддреЛ рдЗрд╕реЗ рдЕрдкрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд░рд╡реИрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдВрджреБ: рдХреГрдкрдпрд╛ рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдлрд╝реНрд▓рдЯрд░ рдХреЛрд░ рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Flutter рдЯреАрдо рдХреЛ IDE рдФрд░ рд╕рдВрдкрд╛рджрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕, рдФрд░ рдЗрдВрдЬреАрд▓рд╡рд╛рдж рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдФрд░ GitHub рдореБрджреНрджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ Flutter рдХреЗ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрддреЛрд╖рдЬрдирдХ рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

@naiveaiguy
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреБрдо рд╕рд╣реА рд╣реЛред рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдЬреЛ рдпрд╣рд╛рдВ рд╕рднреА рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рд╕реНрдкрдВрджрди рдХрд╛ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рднреАред рдореБрдЭреЗ рдЕрдкрдиреЗ рд░рд╡реИрдпреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдФрд░ рдореИрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред

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

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

рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛, рдЗрддрдирд╛ рдХрдо рд╕рдордп, рд╢рд╛рдпрдж рдореБрдЭреЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП...

@escamoteur рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ:

рдореЗрд░реЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдЬреЗрдПрд╕ рдХреА рд╡рдЬрд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирд╛ рд╣реИ

ES6/7 рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рд░реНрдЯ/рдХреЛрдЯрд▓рд┐рди/рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рдЗрддрдиреЗ рдХрд░реАрдм рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдорд╣рд┐рд▓рд╛ рдХреЗ рд╕рд╛рде рдЦреБрд╢реА рд╕реЗ рдиреГрддреНрдп рдХрд░реВрдВрдЧрд╛ :)

рдЬреЛ рдЪреАрдЬ рдореБрдЭреЗ рд╕реНрдкрдВрджрди рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреА рд╣реИ рд╡рд╣ рд╣реИ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдПрдирд┐рдореЗрд╢рди рд╕рдкреЛрд░реНрдЯред 60 рдПрдлрдкреАрдПрд╕ рдкрд░ рд╕реБрдкрд░ рдлрд╛рд╕реНрдЯ рдпреВрдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдУрдкрдирдЬреАрдПрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯ рд╕реНрдХреАрдпрд╛ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ:
https://uimovement.com/
рдореИрдВ рдХрд╕реНрдЯрдо рдпреВрдПрдХреНрд╕ рдореЗрдВ рд╣реВрдВ рдФрд░ рд╕реНрдкрдВрджрди рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рджрд╢рдХреЛрдВ рд╕реЗ рдпреВрдПрдХреНрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШреЛрд╖рдгрд╛рддреНрдордХ/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рд╕реНрдкрдВрджрди рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

@pulyaevskiy

рдлрд┐рд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ:

  • рдбрд╛рд░реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ XML/JSX рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
  • рд╕реНрдкрдВрджрди рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ред

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

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ JSX рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрдардиреАрдпрддрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА?

рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЕрдкрдирд╛ред

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

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

рд╣рдо рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ @sethladd рдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ I believe one of the goals of Dart 2 was to create an infrastructure for more experimentation with the language and let the community create experiments like DSX.

@naiveaiguy

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ 30-40% рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рднреА рдлрд╝реНрд▓рдЯрд░ рдиреЗ рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдЪрдХреНрд░ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИ, рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХреА рдкрд░рддреЛрдВ рд╕реЗ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

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

рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдВрджреБ: рдХреГрдкрдпрд╛ рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдлрд╝реНрд▓рдЯрд░ рдХреЛрд░ рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Flutter рдЯреАрдо рдХреЛ IDE рдФрд░ рд╕рдВрдкрд╛рджрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕, рдФрд░ рдЗрдВрдЬреАрд▓рд╡рд╛рдж рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдФрд░ GitHub рдореБрджреНрджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ Flutter рдХреЗ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрддреЛрд╖рдЬрдирдХ рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдЬрд╝рд░реБрд░реА рдирд╣реАрдВред рд╣рдо рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд╣рдореЗрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рд╕рдм рдЕрдкрдиреЗ рдЖрдк рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдо рдореЗрдВ рд╕реЗ 2 рд╣реИрдВ (рдзрдиреНрдпрд╡рд╛рдж @NathanaelA) рдФрд░ рд╣рдо рдФрд░ рд▓реЛрдЧреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо 1 рдФрд░) рдЕрдЧрд░ рд╡реЗ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

  • рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВ - рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
  • рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрдВ - рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ @sethladd рдХреЗ рдХрдерди рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП _"рдбрд╛рд░реНрдЯ 2 рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдбрд╛рд░реНрдЯ рдЯреАрдо рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдерд╛"_ред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбрд╛рд░реНрдЯ 2 рдореЗрдВ рднреА рд╣рдо рдХреЛрдИ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдбрд╛рд░реНрдЯ рдПрд╕рдбреАрдХреЗ (рдпрд╛ рд╕реНрдкрдВрджрди рдЗрдВрдЬрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ) рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛, рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбрд╛рд░реНрдЯ 2 рдЬреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ _рдХреЙрдорди рдлреНрд░рдВрдЯ-рдПрдВрдб_ (рд╕реАрдПрдлрдИ) рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ (рдбрд╛рд░реНрдЯ рдПрд╕рдбреАрдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ pkg/front_end рдореЗрдВ рд╕реНрдерд┐рдд) рд╣реИ - рдЬреЛ рдбрд╛рд░реНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░реНрд╕рд░ рд╣реИред рдбреАрдПрд╕рдПрдХреНрд╕ рдЬреИрд╕реЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реАрдПрдлрдИ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдбрд╛рд░реНрдЯ рдПрд╕рдбреАрдХреЗ (рдпрд╛ рд╕реНрдкрдВрджрди рдЗрдВрдЬрди) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рднреА рдЙрдкрдХрд░рдг рд╣реИрдВ (рд╕рдВрдмрдВрдзрд┐рдд рдЖрдИрдбреАрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЕрдкрдирд╛ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЪреБрдиреЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ VM рдФрд░ dart2js рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ CFE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдЧрд▓реЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрд╡рд░реЛрдз рд╣реИрдВред

рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рднрд╛рд╖рд╛ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ DSX рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдбрд╛рд░реНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдмреВрдд рдФрд░ рдкреНрд░реЗрд░рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред (/ fyi @leafpetersen @lrhn - рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ)

рдбреАрдПрд╕рдПрдХреНрд╕ рдЬреИрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдорд░реНрдердХреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИрдВ:

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

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

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


  • рдЕрдЧрд▓рд╛ рдпрджрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реАрдПрдлрдИ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рднреА рдпрд╣рд╛рдВ рдЕрд╡рд░реЛрдз рдЕрдзрд┐рдХ рд╣реИ - рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдоред

@mraleph рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХреЛрдб рдкреАрдврд╝реА рдпрд╛ рд╕рдорд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдереЗ, рднрд╛рд╖рд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдЬрд░реВрд░реА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдкрдиреЗ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдПрдВрдЧреБрд▓рд░ рдХреА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, HTML рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рд░реНрдл DSX

@mraleph

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдбреАрдПрд╕рдПрдХреНрд╕ рдХреЛ рдбрд╛рд░реНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡реИрд╕реЗ рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рдСрдирд▓рд╛рдЗрди рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ:
https://spark-heroku-dsx.herokuapp.com/index.html

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

рдорддрджрд╛рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдкрд┐рдЫрд▓реЗ рдЯрд┐рдХрдЯ рдореЗрдВ рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ:
https://github.com/flutter/flutter/issues/11609

@cbazza

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

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

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

@mraleph рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рджред

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

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

// Comparing Flutter to what it might look like in Kotlin
class TutorialHome : StatelessWidget {
    override
    fun build(context: BuildContext) = scaffold {
        appBar = appBar {
            leading = iconButton {
                iconImage = Icon(Icons.menu)
                tooltip = "Navigation menu"
                onPressed = null
            } 
            titleText = "Example title"
            actions = [ // based on https://twitter.com/abreslav/status/867714627060322305
              iconButton { 
                iconImage = Icon(Icons.search)
                tooltip = "Search"
                onPressed = null  
              }
            ]
        }
        body = center {
            // Remember: This is a fully functional programming environment. You can execute any 
           //  code you can think of.
            child = Text("Hello ${MyApp.users.me.fullName.split(" ").first}!")
        }
        floatingActionButton = fab {
            tooltip = "Add"
            childImage = Icon(Icons.add)
            onPressed = null
        }
    }
}

new рдФрд░ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЗ рд╕рд╛рде рдбрд╛рд░реНрдЯ 2 рд╕рдВрд╕реНрдХрд░рдг(@sethladd рд╕реЗ рдХреЛрдб)[2],

class TutorialHome extends StatelessWidget {
  <strong i="13">@override</strong>
  Widget build(BuildContext context) => Scaffold(// implicit new!, also matching your Kotlin here
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.menu)
          tooltip: 'Navigation menu'
          onPressed: null
        )
        title: Text('Example title')
        actions: [ // Dart + strong mode will infer the contents of the list
          IconButton(
            icon: Icon(Icons.search)
            tooltip: 'Search'
            onPressed: null
          )
        ]
      )
      // body is the majority of the screen.
      body: Center(
        child: Text('Hello, world!')
      )
      floatingActionButton: FloatingActionButton(
        tooltip: 'Add' // used by assistive technologies
        child: Icon(Icons.add)
        onPressed: null
      )
   )
}

рдЖрдИрдПрдордУ, рдХреЛрдЯрд▓рд┐рди рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдл рд╣реИ рдФрд░ рдмреЗрд╣рддрд░ рджрд┐рдЦрддрд╛ рд╣реИред рдбрд╛рд░реНрдЯ 2 рд╕рдВрд╕реНрдХрд░рдг рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ рдФрд░ рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ (рдпрджрд┐ рдбрд╛рд░реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?)ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╕рд╣реА рджрд┐рд╢рд╛ рд╣реИред

[1] https://gist.github.com/asarazan/b3c23bef49cf9a61f5a1a19de746f1b0
[2] https://gist.github.com/sethladd/7397a067deb43b6052032195fcb26d94

рдПрдХ рдФрд░ рдХреЛрдг, рдореБрдЭреЗ JSX рдХреА рд░рдЪрдирд╛ рдХреНрд╖рдорддрд╛ рдкрд╕рдВрдж рд╣реИред

рдШрдЯрдХреЛрдВ (рд╡рд┐рдЬреЗрдЯ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рд╕реБрд▓рдн рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ (Alt+UP / Alt+DOWN) рдХреА рдмрд╛рдд рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрдм рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рд╛рдорд╛рди рдХреЛ рдХрдВрдЯреЗрдирд░, рд░реЛ, рдХреЙрд▓рдо рдЖрджрд┐ рд╕реЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ DSX рдЕрдкрдиреЗ рдЖрдк рд╣рд▓ рдХрд░ рд▓реЗрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдордХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд┐рддред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ, рдпрд╣ children рдирд╛рдордХ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдФрд░ JSX рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рд╣реИред рд╕реНрдкрдВрджрди рдмрдЪреНрдЪреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг (рдмрдЪреНрдЪреЛрдВ, рдмрдЪреНрдЪреЛрдВ, рд╢рд░реАрд░, рдЖрджрд┐) рдореЗрдВ рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рдЪрд░реНрдЪрд╛ рд╣реИ: https://github.com/jsforum/jsforum/issues/1

рддреАрд╡реНрд░ рдЧрддрд┐рдбреАрдПрд╕рдПрдХреНрд╕

рд╕реНрд░реЛрдд: https://github.com/flutter/flutter/blob/master/examples/platform_view/lib/main.dart

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

@birkir DSX рдХрдИ/рдЧреИрд░- children рдЪрд╛рдЗрд▓реНрдб рд╕реНрд▓реЙрдЯ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдкреИрдЯрд░реНрди рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдпрд╣ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рд╡рд░реНрдЧ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рд╣рд╛рд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рд╢рд╛рдпрдж рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрдЧрд╛) рддреЛ рдпрд╣ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

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

рдЖрдИрдПрдордПрдЪрдУ, рдЬреЗрд╕рди-рдЬреИрд╕реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ ~ рдПрдХреНрд╕рдПрдордПрд▓-рдЬреИрд╕реА ~ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╣реИ!

container {
  padding: EdgeInsets.symmetric { vertical: 16.0  }
}

@jaychang0917
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдПрдХреНрд╕рдПрдордПрд▓ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JSX рдФрд░ XML рд╕реБрдкрд░рд╕реЛрдирд┐рдХ рдПрдпрд░рдХреНрд░рд╛рдлреНрдЯ рд╡рд░реНрд╕ рдкреНрд░реЛрдкреЗрд▓рд░ рдПрдпрд░рдХреНрд░рд╛рдлреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред

JSX рдХреЗ рд╕рд╛рде, рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<supersonicAircarft 
          aircarft={{"F-22"}} 
          speed={{"mach2"}} 
          style={{"you can style it whatever you want as simple as css"}}
/>

рдпрд╛

<Image
          source={{uri: 'https://i.chzbgr.com/full/7345954048/h7E2C65F9/'}}
          style={{width: 320, height:180}}
        />

JSX рдХреЗ рд╕рд╛рде, рд╣рдо рдКрдкрд░ рджрд┐рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдЯреБрдХрдбрд╝реЗ-рдЯреБрдХрдбрд╝реЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк UI рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдПрдХ <> рдЯреИрдЧ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ UI рдХреЗ рдЗрд╕ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЖрдк рдХрд╣реАрдВ рднреА рд░рдЦ рд╕рдХреЗрдВред

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

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

  • рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд iPhone рдмрдирд╛рдо рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

import React, { Component } from 'react';
import { Image, ScrollView, Text } from 'react-native';

class AwkwardScrollingImageWithText extends Component {
  render() {
    return (
      <ScrollView>
        <Image
          source={{uri: 'https://i.chzbgr.com/full/7345954048/h7E2C65F9/'}}
          style={{width: 320, height:180}}
        />
        <Text>
                        JSX is the philosophy, everything is a component. Simple is Complicate because you can 
                        form everything to your own perfect shape. 
        </Text>
      </ScrollView>
    );
  }
}

рдпрд╛ рд▓рд┐рдЦреЛ

< AwkwardScrollingImage/>

рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП-рдПрдХ рдмрд╛рд░-рд░рди-рд╣рд░ рдЬрдЧрд╣

import { AwkwardScrollingImage } from './your-native-code';
class SomethingFast extends Component {
  render() {
    return (
      <View>
          <AwkwardScrollingImage/>
        <Text>
            JSX is the philosophy, everything is a component. Simple is Complicate because you can form everything to your own perfect shape. Everything is a widget or component.
        </Text>
      </View>
    );
  }
}

~ рдлрд╝реНрд▓рдЯрд░ UI рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред ~

рд╕рдВрджрд░реНрдн:

рд╕реНрдкрдВрджрди:
https://flutter.io/tutorials/layout/
рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб, рдЖрдИрдлреЛрди рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ:
https://facebook.github.io/react-native/

@birkir
рдУрд╣, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ !!! рд╕рд┐рд░реНрдл рдорд╛рдВрд╕ рдФрд░ рдХреЛрдИ рд╣рдбреНрдбреА рдирд╣реАрдВ :)
рдЗрд╕рдХреЗ рд╕рд╛рде https://builderx.io/ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ (рджреВрд╕рд░реА рдПрдирд┐рдореЗрдЯреЗрдб рдЫрд╡рд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - 2 рддрд░рд╣ рд╕реЗ рдпреВрдЖрдИ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдЬреИрд╕реЗ рдлреНрд▓реЗрдХреНрд╕ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП :)

@escamoteur
рдЗрдирд▓рд╛рдЗрди рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЗ рдХреА рддрд░рд╣ рд╣реА рдЧрдиреНрджрд╛ рд▓рдЧреЗрдЧрд╛; рдирдореВрдиреЗ рдКрдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдереЗ:
https://github.com/flutter/flutter/issues/15922#issuecomment -377780062

рд╡реИрд╕реЗ рднреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рддрд░реАрдХрд╛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд╕рдВрдЧрдд рд╣реИред рдбрд╛рд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдбрд╛рд░реНрдЯ рдХреЛрдб рдФрд░ < рдЯреИрдЧ рдорд┐рд▓рд╛рдиреЗ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЕрдЬреАрдм рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рд▓реЗрдЖрдЙрдЯ xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рд╡рд╛/рдХреЛрдЯрд▓рд┐рди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ :)

рдмрд╕ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ

@JonathanSum рдЙрдо ...

рддреЛ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреМрди рд╕реЗ рдлрд╛рдпрджреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдкрдВрджрди рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рддрд░реНрдХ рдордЬрдмреВрдд рдирд╣реАрдВ рд▓рдЧрддрд╛ред

JSX XML рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИред JSX рдЙрд╕ XML рд╕реЗ рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЬреЗрдПрд╕рдПрдХреНрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдЬреИрд╕рд╛ рд╣реИ , рдЕрдЧрд░ рдлреЗрд╕рдмреБрдХ рдЯреАрдо рдореБрдЭрд╕реЗ рдЭреВрда рдирд╣реАрдВ рдмреЛрд▓рддреА рд╣реИ :)

@jaychang0917
рдЬреЗрдПрд╕рдПрдХреНрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдЙрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред (рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИ)

рдпрджрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдордЬрдмреВрдд рддрд░реНрдХ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реВрдВред
рдореИрдВ рдЕрдкрдиреА рдмрд╛рдд рдпрд╣реАрдВ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рд▓реЛрдЧ JSX рдпрд╛ DSX рдХреБрдЫ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛ред

  • рд╕рдВрджрд░реНрдн:
    https://facebook.github.io/jsx/
    This specification does not attempt to comply with any XML or HTML specification. JSX is designed as an ECMAScript feature and the similarity to XML is only for familiarity.

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдПрдХреНрд╕рдПрдордПрд▓ рд╕реЗ рдЕрд╕рд▓реА рд╕рдорд╛рдкрди рдЯреИрдЧ рдпрд╛рдж рдЖрддреЗ рд╣реИрдВ :)
рдЖрдЗрдбрд┐рдпрд╛: рдСрдЯреЛ рдЬреЗрдирд░реЗрдЯреЗрдб рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ

рдХреЛрдЯрд▓рд┐рди рдиреЗ рдЗрд╕реЗ рднреА рд╣рд▓ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдЬрд░рд╛ рджреЗрдЦрд┐рдП рдХрд┐ рдХреЛрдЯрд▓рд┐рди-рд░рд┐рдПрдХреНрд╢рди рдФрд░ рдЕрдВрдХреЛ рдХрд┐рддрдиреЗ рд╢рд╛рдирджрд╛рд░ рд╣реИрдВ

рдХреЛрдЯрд▓рд┐рди-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрддрдиреА рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдХреЗрдПрд╕рдПрдХреНрд╕ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ :)

import React from 'react';

export function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}
package hello

import react.*
import react.dom.*

fun RBuilder.hello(name: String) {
    h1 {
        +"Hello, $name"
    }
}
package hello

import react.*
import react.dom.*

fun RBuilder.hello(name: String) {
   <h1>Hello, {name}</h1>
}

рдЯреИрдЧ рдЬрд╕реНрдЯ рдбреЙрди|рдЯреА рд╡рд╣рд╛рдВ рдХреЗ рдирд╣реАрдВ рд╣реИрдВ :)

рдЬреЗрдПрд╕рдПрдХреНрд╕/рдбреАрдПрд╕рдПрдХреНрд╕/рдХреЗрдПрд╕рдПрдХреНрд╕ рд╢рд┐рд╡рд┐рд░ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЯреИрдЧ рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ :)

@ рд╕реИрдпрдж89
рдХреНрдпрд╛ рдЖрдк HTML рдХреА рддрд░рд╣ рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╛ рдЖрдк "рдмрдЪреНрдЪреЛрдВ", "рдмрдЪреНрдЪреЗ" рдпрд╛ [] рд╢рдмреНрдж рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, JSX рдХреЗрд╡рд▓ рдПрдХ рдЯреИрдЧ рдЯрд╛рдЗрдк рдХрд░рдХреЗ рд╕реИрдХрдбрд╝реЛрдВ UI рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬрд╝реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдПрдХ рдЕрдиреНрдп рдкрд╣рд▓реВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд░реВрдкрдг рд╣реИ рдЬреЛ dart format рдХрд░рддрд╛ рд╣реИред рдЖрдИрдПрдордПрдЪрдУ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЧреНрд░рдгреА рдмрдЪреНрдЪреЗ рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ:/рдмрдЪреНрдЪреЛрдВред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╕реНрд╡рд░реВрдкрдг рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╡реГрдХреНрд╖ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ:

 Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(title: new Text("WeatherDemo")),
      resizeToAvoidBottomPadding: false,
      body: 
        new Column(children: <Widget>
        [
          new Padding(
            padding: const EdgeInsets.all(16.0),
            child: 
            new TextField(
                    key: AppKeys.textField,
                    autocorrect: false,
                    controller: _controller,
                    decoration: new InputDecoration(hintText: "Filter cities",),
                    style:  TextStyle(fontSize: 20.0,),
                    onChanged: ModelProvider.of(context).textChangedCommand,
                    ),
          ),
          new Expanded(
                child: 
                new RxLoader<List<WeatherEntry>>(
                        key: AppKeys.loadingSpinner,
                        radius: 25.0,
                        commandResults: ModelProvider.of(context).updateWeatherCommand,
                        dataBuilder: (context, data) => new WeatherListView(data ,key: AppKeys.weatherList),
                        ),
          ),
          new Padding(
            padding: const EdgeInsets.all(8.0),
            child: 
            new Row(children: <Widget>
            [
                new Expanded(
                    child: 
                    // This might be solved with a Streambuilder to but it should show `WidgetSelector`
                    new WidgetSelector(
                            buildEvents: ModelProvider.of(context).updateWeatherCommand.canExecute,   //We access our ViewModel through the inherited Widget
                            onTrue:  new RaisedButton(    
                                            key: AppKeys.updateButtonEnabled,                           
                                            child: new Text("Update"), 
                                            onPressed: ModelProvider.of(context).updateWeatherCommand,
                                            ),
                            onFalse:  new RaisedButton(                               
                                            key: AppKeys.updateButtonDisabled,                           
                                            child: new Text("Please Wait"), 
                                            onPressed: null,
                                            ),

                        ),
                ),
                new StateFullSwitch(
                        state: true,
                        onChanged: ModelProvider.of(context).switchChangedCommand,
                   )
              ],
            ),
          ),
        ],
      ),
    );
  }

рдпрд╣ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рджрд┐рд╢рд╛ рджрд┐рдЦрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
@sethladd рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛?

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдЙрддрдирд╛ рдЧрд░реНрдо рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЗрд╕рдХреА рдмрд╣рди рдХрд╛ рдореБрджреНрджрд╛ рдерд╛: рдореБрд╕реНрдХрд╛рди:ред

рдЕрдЧрд░ рдореБрдЭреЗ 2 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛, рддреЛ рдореИрдВ рдбрд╛рд░реНрдЯ рдХреА рддрд░рдл рдЭреБрдХ рдЬрд╛рддрд╛ред рдпрд╣ рдХрдИ рддрдереНрдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдЯрд▓рд┐рди-рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЧрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреБрдЫ рдХреЛрдЯрд▓рд┐рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдбрд╛рд░реНрдЯ рдкрд░ рд▓рд╛рддрд╛ рд╣реИ: рдорд╛рд╕реВрдо:ред

@emalamela ,

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JSX рдЬреИрд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдХрдВрдкрдиреА/рдбреЗрд╡рд▓рдкрд░/рдлреНрд▓рдЯрд░ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред

рд╣рдореЗрдВ рд╣рд░ рдбрд╛рд░реНрдЯ рдЕрдкрдбреЗрдЯ рд╕реЗ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдХреИрд╕реЗ DSX рдХреЛ рдбрд╛рд░реНрдЯ рдЕрдкрдбреЗрдЯ рд╕реЗ рднреА рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд╛рд░реНрдЯ рдХрд╛ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реИред

рдореИрдВ рдЯрд╛рдЗрдк-рд╕реЗрдлреНрдЯреА рдХреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдХрд┐ JSX рдЬреИрд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕рдХреЗ рд░рд╛рдЬрд╕реНрд╡ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

DSX рдореЗрдВ рдЯрд╛рдЗрдк рд╕реЗрдлрдиреЗрд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╢реВрдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ DSX рдбрд╛рд░реНрдЯ рдХреЗ рдКрдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рд┐рдВрдЯреЗрдЯрд┐рдХ рд╢реБрдЧрд░ рд▓реЗрдпрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбрд╛рд░реНрдЯ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдбрд╛рд░реНрдЯ рдХрдВрдЯреНрд░реЛрд▓ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
https://github.com/flutter/flutter/issues/15922#issuecomment -377780062

рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @cbazza !

рдпрд╣рд╛рдБ рдмрд╛рдд рд╣реИ, рдХреЛрдИ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдмрд╕ рдХрд┐рд╕реА рднреА рдЕрдиреБрднрд╡реА рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдкреВрдЫреЗрдВред

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

рд╕рд╛рде рд╣реА рдпрд╣ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкреГрдердХреНрдХрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЕрдм рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд╛рдлреА рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИред

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдХреИрд╕реЗ DSX рдХреЛ рдбрд╛рд░реНрдЯ рдЕрдкрдбреЗрдЯ рд╕реЗ рднреА рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд╛рд░реНрдЯ рдХрд╛ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реИред
DSX рдореЗрдВ рдЯрд╛рдЗрдк рд╕реЗрдлрдиреЗрд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╢реВрдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ DSX рдбрд╛рд░реНрдЯ рдХреЗ рдКрдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рд┐рдВрдЯреЗрдЯрд┐рдХ рд╢реБрдЧрд░ рд▓реЗрдпрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбрд╛рд░реНрдЯ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдбрд╛рд░реНрдЯ рдХрдВрдЯреНрд░реЛрд▓ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЙрдЪрд┐рдд рдЕрдВрдХред рд▓реЗрдХрд┐рди DSX рдХреЛ рдЕрднреА рднреА рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдФрд░ рд╕реБрдзрд╛рд░рдирд╛ рдмрд╛рдХреА рд╣реИ, рдЬреЛ рдЕрднреА рднреА рдкреНрд░рдпрд╛рд╕ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдореИрдВ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдЕрдиреНрдп рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг / рдЕрднрд╛рд╡ рд╡рд╛рд▓реЗ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

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

рдЬрд╣рд╛рдБ рддрдХ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рдбреЗрд╡рд▓рдкрд░ рдиреЗ DSX/JSX рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪреБрдирд╛, рддреЛ рд╡рд╣ рд╡реНрдпрдХреНрддрд┐ рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рдкрд╣рд▓реВ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ, рд╡рд╣ рд╣реИ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░ рддреБрд▓рдирд╛ред рдореИрдВ рдЗрд╕рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╕реНрдкрдВрджрди рдЬреЗрдПрд╕ рдмреНрд░рд┐рдЬ рдХреЗ рдмрд┐рдирд╛ рд░рд┐рдПрдХреНрдЯ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╣реЛ рдФрд░ рдШрдЯрдХ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рд╡рд┐рдЬреЗрдЯ рдХрд░ рджреЗред рдЕрдЧрд░ рд╡рд╣реА рд╣реИ рддреЛ рдмрджрд▓рд╛рд╡ рдХреНрдпреЛрдВ ?

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

рдЬрд╣рд╛рдБ рддрдХ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рдбреЗрд╡рд▓рдкрд░ рдиреЗ DSX/JSX рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪреБрдирд╛, рддреЛ рд╡рд╣ рд╡реНрдпрдХреНрддрд┐ рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

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

рд╡рд┐рдХрд╛рд╕ рдХреА рдмрд╛рдд рдХрд░реЗрдВ рддреЛ рдпрд╣ 'рд╕рд░реНрд╡рд╛рдЗрд╡рд▓ рдСрдл рдж рдлрд┐рдЯреЗрд╕реНрдЯ' рдирд╣реАрдВ рд╣реИ, рдпрд╣ 'рд╕рд░реНрд╡рд╛рдЗрд╡рд▓ рдСрдл рдж рдореЛрд╕реНрдЯ рдПрдбреИрдкреНрдЯреЗрдмрд▓' рд╣реИред рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВ рдпрд╛ рдЖрдк рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдВред

@cbazza

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

рдХреНрдпрд╛? рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА? рд╕реНрдкрдВрджрди рдмреАрдЯрд╛ рдореЗрдВ рд░рд╣рддреЗ рд╣реБрдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╕реНрдерд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдиреЗ рдмрд╣реБрдд рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд┐рдпрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдкрддрдВрдЧреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ "рдЕрд╕рдлрд▓"? рд╕реНрдкрдВрджрди рдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@naiveaiguy
рджреЗрдЦрд┐рдП, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ cbazza рдХреЗ рдЙрддреНрддрд░реЛрдВ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдореЗрд░реЗ рдЬрд╡рд╛рдм рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП 15 рд╕реЗрдХрдВрдб рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк DSX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред
рдЬрд░рд╛ рдиреАрдЪреЗ рджреЗрдЦреЗрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ JSX рд╣реИред

рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рдПрдХ рдмреЙрдбреА рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдиреЗрд╡реА рдмрд╛рд░ рдХреЛрдб рд╕реЗ рдПрдирдПрд╡реА рдмрд╛рд░ рдХреЛрдб рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

import XXXXX, { Component } from 'XXXXX';
import { Text, View } from 'XXXXX-native';
import navbar from "your code1"
import body from "your code2"

class SomethingFast extends Component {
  render() {
    return (
      <View>
        <navbar
            style={{width: 360, height:90}}
         />
        <Image
          source={{uri: 'https://google.com/dsx.jpg/'}}
          style={{width: 320, height:180}}
        />
        <body/>
        <Text>
          Look at <strong i="11">@escamoteur</strong> s code from above.
           Can you export part of UI code to another place,
           separate it into different modules, and read everything in few seconds or less?
        </Text>
      </View>
    );
  }
}
       I think cbazza is right.
       If flutter uses DSX or whatever that is JSX,
       it is a perfect UI framework.

       So, could we have something
       similar or better in the future?
       Or do you really think that the
       current is fine?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ JSX рд╕реЗ рдирдлрд░рдд рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлреЗрд╕рдмреБрдХ рд╕реЗ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдЫреЛрдЯреА рдЬрд╛рдкрд╛рдиреА рдЧреЗрдо рдХрдВрдкрдиреА рд╕реЗ рд╣реИред

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

@JonathanSum рдЖрдк рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ JSX рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдХреЗ рдХреБрдЫ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдбреАрдПрд╕рдПрдХреНрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

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

рдЖрдИрдПрдордПрдЪрдУ рдиреЗ new/const рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛рдХрд░ рдкрд╣рд▓реЗ рд╣реА рдмрд╣реБрдд рдорджрдж рдХреА рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбрд╛рд░реНрдЯ рдкреНрд░рд╛рд░реВрдк рдкреЗрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдкреЗрдбрд╝ рд╕рдВрд░рдЪрдирд╛ IMHO рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬреЛрд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ:

    return Scaffold(
      appBar: AppBar(title: Text("WeatherDemo")),
      resizeToAvoidBottomPadding: false,
      body: 
        Column(children: <Widget>
        [
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: 
            TextField(
                    key: AppKeys.textField,
                    autocorrect: false,
                    controller: _controller,
                    decoration: InputDecoration(hintText: "Filter cities",),
                    style:  TextStyle(fontSize: 20.0,),
                    onChanged: ModelProvider.of(context).textChangedCommand,
                    ),
          ),

https://reactjs.org/docs/introducing-jsx.html

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

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

@woodstream рдЬрд┐рд╕ рддрд░рд╣ рдХреЗ рд▓реЛрдЧ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдПрдХреНрдЯ рдлреИрдирдмреЙрдп рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рд╣реИрдВред рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕реНрдкрдВрджрди рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреА рдкреВрд░реНрддрд┐ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдлреИрдирдмреЙрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдЧрд▓рдд рдерд╛ред

@naiveaiguy , @Hixie

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

рдЖрдк рдЧрд▓рдд рд╣реИрдВ рдФрд░ рдЖрдкрдХрд╛ рдирд╛рдо рд╡рд┐рднрд╛рдЬрдирдХрд╛рд░реА рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ ('рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлреИрдирдмреЙрдп' рдФрд░ 'рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░') рдЕрд╡рд╛рдВрдЫрд┐рдд рд╣реИрдВред JSX/DSX рдореЗрдВ рддрдХрдиреАрдХреА рдпреЛрдЧреНрдпрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдереНрд░реЗрдб рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐, рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВред рдореЗрд░реА рд╣рд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдбрд╛рдЙрди-рд╡реЛрдЯ рдХрд░рдирд╛ рднреА рдмрдВрдж рдХрд░ рджреЗрдВ, рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

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

@ рдПрдВрдбрд░реНрд╕-рд╕реИрдВрдбрд╣реЛрдо рдореИрдВ рд╡рд┐рдЬреЗрдЯ рдЯреНрд░реА рдХреА рджреГрд╢реНрдпрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @escamoteur рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВрдиреЗ рдЙрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛:

return
      Scaffold(
          appBar: AppBar(title: Text("WeatherDemo")),
          resizeToAvoidBottomPadding: false,
          body:
        Column(children: <Widget> [
          Padding(
              padding: const EdgeInsets.all(16.0),
              child:
            TextField(
                key: AppKeys.textField,
                autocorrect: false,
                controller: _controller,
                decoration: InputDecoration(hintText: "Filter cities",),
                style:  TextStyle(fontSize: 20.0,),
                onChanged: ModelProvider.of(context).textChangedCommand,
            ),
          ),
        ])
      );

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

@cbazza

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

рд╢рдмреНрдж "рдлреИрдирдмреЙрдп" рдХреЛ рдЖрдо рддреМрд░ рдкрд░ рдЕрдкрдорд╛рдирдЬрдирдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рднреА рдЗрд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢рдмреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

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

@hartmannj

рдмрд╕ рдХреБрдЫ рдорд╛рдореВрд▓реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг ...

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлреЗрд╕рдмреБрдХ рдХреЗ рдкрд╛рд╕ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдерд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╛рдорд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ) рдЬреЛ рдХрд┐ рдбрд╛рд░реНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рджрд░рдЕрд╕рд▓ ES2015/ES6 рдХреЗ рдмрд╛рдж рд╕реЗ, JS рдиреЗ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рдирд╛рдо рджрд┐рдпрд╛ рд╣реИ; рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╕ 'рдбреА-рд╕реНрдЯреНрд░рдХреНрдЪрд░рд┐рдВрдЧ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

// function declaration
function findUsersByRole ({
  role,
  withContactInfo, 
  includeInactive
}) {
  if (role === 'admin' && withContactInfo) {
  ...
  }
...
}


// usage
findUsersByRole({
  role: 'admin', 
  withContactInfo: true, 
  includeInactive: true
})

https://medium.freecodecamp.org/elegant-patterns-in-modern-javascript-roro-be01e7669cbd

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдбрд╛рд░реНрдЯ рдкреНрд░рдХрд╛рд░-рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рд╣реИ!

рдЖрдкрдХреЛ DSX рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдорд┐рд▓рддреА рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП https://github.com/flutter/flutter/issues/11609 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЙрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреИрд╕реЗ рдорддрджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ- рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдпреБрдЧ рдореЗрдВ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХреЛрдб рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рджреВрд╕рд░реА рдкреНрд░рдХреГрддрд┐ рд╣реИред

<like><this /></like>

рд╕реНрдкрдВрджрди рдХреЛ рдЙрдбрд╝рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдмрдиреЗрдВ!

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

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

рдФрд░ рд╢рд╛рдпрдж... рдПрдХреНрд╕рдПрдордПрд▓ рдбрд╛рд░реНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб! ;рдкреА

рдордВрдЧрд▓рд╡рд╛рд░, 28 рдЕрдЧрд╕реНрдд 2018 рдХреЛ 21:29 рдмрдЬреЗ, Touseef [email protected] рдиреЗ рд▓рд┐рдЦрд╛:

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/flutter/flutter/issues/15922#issuecomment-416550338 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AC8aNdVb_NV8c8JH4t36OS1OOvX6kY58ks5uVSmjgaJpZM4S6HPa
.

--
рдЯреЛрдиреА рдкреЛрд▓рд┐рдиреЗрд▓рд┐

рдореЗрд░реЗ рд▓рд┐рдП JSX рдЬреИрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ рдФрд░ рдпрд╣ рд░рд┐рдПрдХреНрдЯ, рд╡реВ рдФрд░ рд╕реНрдкрдВрджрди рдЬреИрд╕реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдг рдмрди рдЬрд╛рдПрдЧрд╛ред

рд╣рдореЗрдВ рдбрд╛рд░реНрдЯ рдореЗрдВ рдПрдХреНрд╕рдПрдордПрд▓ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреВрдЖрдИ рдФрд░ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рддреЛ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдорд╡реАрд╡реАрдПрдо, рдПрдорд╡реАрд╕реА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╛рдВрдЫрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕реЗ рджреВрд╕рд░реЗ рд╕реВрддреНрд░ рдореЗрдВ рдХрд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди:

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ JSX рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред .html рдпрд╛ .xml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ рдФрд░ рдЗрдирд╕реЗ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдПрдВред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдПрдХ рдкреВрд░реНрдг JSX рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╢реБрд░реБрдЖрдд рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧрд╛ред
рдпрджрд┐ рд╡рд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд░реНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рд╡рд┐рд╖рдп рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧреАред

рдЕрдиреНрдпрдерд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИред рд╣рдо рдпрд╣рд╛рдБ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рднрд╛рд░реА рдмрд╣рд╕ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред

рдпрджрд┐ рд╕реНрдкрдВрджрди рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕рдПрдордПрд▓/рдЬреЗрдПрд╕рдПрдХреНрд╕/рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдпреВрдЖрдИ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЗрд╕реЗ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдореЗрдВ рдЙрддреНрдкрд╛рджрди рд╕реНрддрд░ рдХреЗ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛!

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ @leossmith tht рд╣реА рдЙрддреНрдкрд╛рджрди рд╕реНрддрд░ рдХреЗ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рд╣реИред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ _not_ JSX рдпрд╛ рдмрд╛рд╣рд░реА рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдореЗрдВ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдБред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбреАрдк рдиреЗрд╕реНрдЯреЗрдб рдбрд┐рдХреНрд▓реЗрд░реЗрдЯрд┐рд╡ рдпреВрдЖрдИ рдЯреНрд░реА рдХреЛ рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЬреЛрдбрд╝ рджреА рд╣реИрдВ:

  • new рдФрд░ const рдХреАрд╡рд░реНрдб рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИред
  • IDE рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ
  • dartfmt рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдореЗрдВ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдБ

рдареАрдХ рдпрд╣реА DSX/JSX рдХрд░рддрд╛ рд╣реИ, рднрд╛рд╖рд╛ DSX рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рд╣реИ, JSX рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ !!!

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

DSX, рдбреАрдк рдиреЗрд╕реНрдЯреЗрдб рдбрд┐рдХреНрд▓реЗрд░реЗрдЯрд┐рд╡ рдЯреНрд░реА рдХрд╛ рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реИред рдЬреИрд╕реЗ JSX рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИред

https://facebook.github.io/jsx/

рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡реГрдХреНрд╖ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред

@cbazza рдЖрдк рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рдЙрдард╛рддреЗ рд╣реИрдВред JSX рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдиреНрдпрд╛рдпрд╕рдВрдЧрдд рдФрд░ рд╕реБрдзрд╛рд░ рд╣реИред

рддреЛ рдЖрдЗрдП рдкрд╣рд▓реЗ рджреЛ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░реЗрдВ:

  1. UI рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА DSLред рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл 100% рд╣реВрдВред рдореЗрд░рд╛ рд╣рдореЗрд╢рд╛ рд╕реЗ рдорд╛рдирдирд╛ тАЛтАЛрд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╣рд▓ рд╣реЛрдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдмрд╣рд╕ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрд╛ рдерд╛ред рдЗрд╕реЗ 58 рд╣рдЬрд╛рд░ рдмрд╛рд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рдФрд░ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рд▓рдЧрднрдЧ рдХреЛрдИ рдЕрд╕рд╣рдорддрд┐рдкреВрд░реНрдг рд░рд╛рдп рдирд╣реАрдВ: рдореЗрд░реА 80% рдХреЛрдбрд┐рдВрдЧ рдпрд╣ рдХрд░ рд░рд╣реА рд╣реИ (рдпрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдорд░ рдХреНрдпреЛрдВ рд░рд╣реЗ рд╣реИрдВ)
  2. рднрд╛рд╖рд╛ рд╕реБрдзрд╛рд░ред рдЧрд╣рд░рд╛рдИ рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб UI рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдкрд░ рд╣рдо рджреЛрдиреЛрдВ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реИрдВред JSX рдХреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реИрдВ:

  1. рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛: рд╡реЗрдм рдкрд░, JSX рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝ (HTML DOM рдиреЛрдбреНрд╕) рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╕реНрдкрдВрджрди рдореЗрдВ, рд╣рдо рд╡рд┐рдЬреЗрдЯ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  2. рдкрд░рд┐рдЪрд┐рдд: рд▓реЛрдЧ html рдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВред рд▓реЗрдХрд┐рди DSX рдкреНрд░рд╕реНрддрд╛рд╡ JSX/XML рд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдиреАрдЪреЗ рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ (рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ) рдЬреЛ рдпреВрдЖрдИ рдкреЗрдбрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдПрдордПрд▓ рдХреЛ рдЕрдЪреНрдЫрд╛ (рдФрд░ рдкрдардиреАрдп) рдмрдирд╛рддреА рд╣реИрдВред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЛ рднрд╛рд╖рд╛ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдиреНрд╣реЗрдВ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдПрдВрдб рдЯреИрдЧ рд╣реИрдВред рдпрд╣ xml-ish рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╡рд┐рдЬреБрдЕрд▓ рдмреЗрд╕рд┐рдХ рдореЗрдВ рдпрд╣ 90 рдХреЗ рджрд╢рдХ рдореЗрдВ рдерд╛ (рдерд┐рдВрдХ рдПрдВрдб рдЗрдл)ред рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рд╣реИред рдЖрдИрдбреАрдИ "рд╡рд░реНрдЪреБрдЕрд▓ рдПрдВрдб рдЯреИрдЧ" рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрдХреЗрдЪ рд╣реИред рдореИрдВ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
  2. рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреБрдг рдмрдЪреНрдЪреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рджреЛрдзрд╛рд░реА рддрд▓рд╡рд╛рд░ рд╣реИред рдРрд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдбрд╛рд░реНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреНрд╕рдПрдордПрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд╛рдЗрд▓реНрдб рд╕рд╛рдордЧреНрд░реА рдореЙрдбрд▓ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рд╡рд┐рдЬреЗрдЯ:
MyWidgetA(children: [ w1, w2 ])
MyWidgetB(child: w1)
MyWidgetC(top: w1, bottom: w2)

рдПрдВрдб рдЯреИрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрд╡ рдкреНрд░рд╕реНрддрд╛рд╡

ButtonsView(
        onDeal: onDeal,
        onHit: onHit,
        onStay: onStay,
)ButtonsView

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

рдиреЗрд╕реНрдЯреЗрдб рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрд╡ рдкреНрд░рд╕реНрддрд╛рд╡

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

рдореИрдВ рдбрд╛рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪреА рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдореИрдВ "рдмрдЪреНрдЪреЛрдВ" рдирд╛рдордХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪреА рдХреЗ рддрд░реНрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:

```
//рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛:
рдлреВ (рдП: 1, рдмреА: 10, рд╕реА: 44, рдмрдЪреНрдЪреЗ: [...])

// рд╣рдо рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ:
рдлреВ (рдП: 1, рдмреА: 10, рд╕реА: 44) [

]

рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░/рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рдПрдХрд▓ рдмрдЪреНрдЪреЗ рдпрд╛ 2 рдмрдЪреНрдЪреЗ (рдЬреИрд╕реЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ) рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрдВ, рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВред

рдореИрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдореЗрдВ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдБ

рдареАрдХ рдпрд╣реА DSX/JSX рдХрд░рддрд╛ рд╣реИ, рднрд╛рд╖рд╛ DSX рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рд╣реИ, JSX рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ !!!

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

DSX, рдбреАрдк рдиреЗрд╕реНрдЯреЗрдб рдбрд┐рдХреНрд▓реЗрд░реЗрдЯрд┐рд╡ рдЯреНрд░реА рдХрд╛ рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реИред рдЬреИрд╕реЗ JSX рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИред

https://facebook.github.io/jsx/

рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡реГрдХреНрд╖ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред

@StokeMasterJack - рдЕрдВрдд рдЯреИрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЬреИрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред
рдЖрдЗрдбрд┐рдпрд╛: рдСрдЯреЛ рдЬреЗрдирд░реЗрдЯреЗрдб рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ

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

рдореИрдВ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред рдпрд╣ рдЬреЗрдПрд╕рдПрдХреНрд╕/рдПрдЪрдЯреАрдПрдордПрд▓/рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рджрд░реНрдж рд╣реИред рдЦрд╛рд╕рдХрд░ рдЬрдм рдореИрдВ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдмрд╣реБрдд рд╕рд╛рдл рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордЭреМрддрд╛ рд╣реИред

рдЕрдЧрд░ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реБрдзрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдИрдбреАрдИ рдкрдХреНрд╖ рдкрд░ рдЦреЛрдЬ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, vscode рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдирд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

screen shot 2018-10-11 at 01 31 33

(рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╕рдорд╛рди рд╣реИ)

рдлреЛрдХрд╕реНрдб рдореЗрдердб рдкрд░ рд░реБрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рддрд╛рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЛ рдордБрдбрд░рд╛рддреЗ рд╕рдордп рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд UI рдкреНрд░рд╛рдкреНрдд рд╣реЛ:

lib > main.dart > Foo > build > Container > Center > Text 

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

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


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

рдХрд╛рдлреА рдХреБрдЫ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдирдП рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ
  • рд╡рд┐рдЬреЗрдЯ рд╣рдЯрд╛рдПрдВ
  • рдмрдЪреНрдЪреЗ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреЗрдЯ рд╕реНрд╡реИрдк рдХрд░реЗрдВ
  • рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреЗрдЯ рд╕реНрд╡реИрдк рдХрд░реЗрдВ

рдЗрдиреНрд╣реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдЕрдм рдХреЛрд╖реНрдардХреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


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

@rrousselGit - рд╡реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ 3.2 рдкрд░ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдкрдВрджрди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

@ рд░реЙрдХрд╡реЛрд▓

рдпрд╣рд╛рдБ Android рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ:

image

рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ Option+Enter (macOS) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдХреНрд░рд┐рдпред
рдореИрдВ рд╣рд░ рд╕рдордп рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╕реБрдкрд░ рдорджрджрдЧрд╛рд░ред

рд╡рд┐рд╖рдп рдкрд░: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо "рдпреВрдЖрдИ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ" рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рддрд▓рд╛рд╢ рд░рд╣реА рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рдореЛрд░реНрдЪреЗ рдкрд░ рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдФрд░ рд╕реБрдзрд╛рд░ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ @StokeMasterJack рдХреЗ рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреЗ рд╣реИрдВред

@Rockvole рдорд╣рд╛рди рджрд┐рдорд╛рдЧ рдПрдХ рдЬреИрд╕реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ!

@StokeMasterJack

рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм !!!

JSX рдХреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реИрдВ:

  1. рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛: рд╡реЗрдм рдкрд░, JSX рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝ (HTML DOM рдиреЛрдбреНрд╕) рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╕реНрдкрдВрджрди рдореЗрдВ, рд╣рдо рд╡рд┐рдЬреЗрдЯ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред

JSX рдХреА рд╢рдХреНрддрд┐ HTML/DOM рдиреЛрдбреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдШрдЯрдХ рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╣реИ; рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рдкрд╛рд╕ HTML/DOM рдиреЛрдбреНрд╕ рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ?

  1. рдкрд░рд┐рдЪрд┐рдд: рд▓реЛрдЧ html рдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВред рд▓реЗрдХрд┐рди DSX рдкреНрд░рд╕реНрддрд╛рд╡ JSX/XML рд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдКрдкрд░ рдХреА рддрд░рд╣, рдпрд╣ HTML рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореЗрдЬрдмрд╛рди рднрд╛рд╖рд╛ рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреНрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛рддреНрдордХ рдорд╛рд░реНрдХрдЕрдк рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИ ред

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

@ рд░реЙрдХрд╡реЛрд▓

рдореИрдВ рдХреЗрд╡рд▓ рдПрдВрдб рдЯреИрдЧ рдиреЛрдЯреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JSX-рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛

рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ ;)

@rrousselGit

рдореИрдВ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред

рдЖрдкрдХреЛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ; рд╡реЗрдмрд╕реНрдЯреЙрд░реНрдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдСрдЯреЛ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдЬреЗрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рджреВрд╕рд░реЗ рдХреЛ рдПрдбрд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдУрдкрди рдпрд╛ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдХрд╛ рдирд╛рдо рднреА рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рд╛рди рд╕рдВрдкрд╛рджрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрд┐рд╕рдХрд╛ рджреВрд╕рд░реЛрдВ рдХреЛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдкрдХреЛ 'рд╡реАрдПрд╕ рдХреЛрдб' рджреЗрдЦрдХрд░)ред

рдкреВрд░реА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВрдиреЗ рдорд╣реАрдиреЛрдВ рддрдХ рдлрд╝реНрд▓рдЯрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджреИрдирд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рдПред рдФрд░ рдореБрдЭреЗ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рдХреЛрдИ рдХрдореА рдпрд╛ рдиреЗрд╕реНрдЯреЗрдб рд╡рд┐рдЬреЗрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреЛрдИ рдЕрд╕реБрд╡рд┐рдзрд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ

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

рдЖрдкрдХреЛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ; рд╡реЗрдмрд╕реНрдЯреЙрд░реНрдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ

Vscode рд╡рд╣ рднреА рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдШреБрдорд╛рддреЗ рд╕рдордп рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЪрд░рдг рдореЗрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдЯреИрдЧ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЕрдиреБрднрд╡ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдирд╣реАрдВ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ

рдкрдХреНрдХрд╛ ! рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЯреВрд▓реАрдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрднрд╡рд╣реАрдирддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдлрд┐рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдореА ЁЯШД

рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрдердм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрдврд╝рдирд╛ рдПрдХ рджрд░реНрдж рд╣реИ, [...]

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

@pulyaevskiy - рдЙрдкрдпреЛрдЧреА рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓рд┐рдирдХреНрд╕ рдкрд░ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ Alt-Enter рд╣реИред рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рд╢реАрд░реНрд╖ рдореЗрдиреВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рджреБрдИ рдХреАрдкреНрд░реЗрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИ :)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдЯреИрдЧ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

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

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣рд╛рдБ рдЖрдкрдХреЗ рддрд░реНрдХ рд╡рд┐рд╖рдп рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдореВрд▓ рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдХрдо рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджреЛрдВ рдмрдирд╛рдо async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рд╕реНрдкрдВрджрди рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрд╛рд░ рд╡реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддреЗ рд╣реИрдВ; DSX рдХреЗ рд╕рд╛рде рдЖрдк рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 10 рд▓рд╛рдЗрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ 1 рд▓рд╛рдЗрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрдо рд╢реЛрд░ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдЯреНрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рд╢реИрд▓реА рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдбрд╛рд░реНрдЯ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдХреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рднрд╛рд╖рд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рднрд╛рд╖рд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рд╕рдорд╕реНрдпрд╛ рдЦрд░рд╛рдм рдкреНрд░рдерд╛рдУрдВ рд╕реЗ рдЖрддреА рд╣реИ, рдЦрд░рд╛рдм рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рдирд╣реАрдВред

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

рдпрд╣ рдПрдХ рднрдпрд╛рдирдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ @ рд╡реБрдбрд╕реНрдЯреНрд░реАрдо

рдЕрдкрдбреЗрдЯ : рд╕рд┐рд░реНрдл рдЕрдкрдиреА рдмрд╛рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд░реНрдХ рдХреЗ рд╕рд┐рд░реНрдл рд╢рдмреНрджреЛрдВ рдХреЛ рдХреЛрд╕рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред DSX рд╕рдорддреБрд▓реНрдп рдЙрддрдирд╛ рд╣реА рд▓рдВрдмрд╛ рд╣реИ... рдЗрд╕рдХрд╛ рд▓рд╛рдЗрди рдХрд╛рдЙрдВрдЯ рдпрд╛ HTML рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

class MusicImage extends StatelessWidget {

  TextStyle titleTextStyle = TextStyle(
    fontWeight: FontWeight.w800,
    letterSpacing: 0.5,
    fontSize: 20.0
  );

  Container titleText = (
    <Container height={116.0} padding={EdgeInsets.all(10.0)}>
      <Text style={titleTextStyle}>title</Text>
    </Container>
  );

  TextStyle authorTextStyle = TextStyle(
    fontWeight: FontWeight.w800,
    letterSpacing: 0.5,
    fontSize: 10.0,
  );

  Container music = (
    <Container
      height={40.0}
      decoration={BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.all(Radius.circular(8.0))
      )}
      padding={EdgeInsets.fromLTRB(0.0, 5.0, 5.0, 0.0)}
      margin={EdgeInsets.fromLTRB(8.0, 0.0, 8.0, 0.0)}
    >
      <Stack>
        <Row>
          <Container
            height={30.0}
            width={30.0}
            decoration={BoxDecoration(
              borderRadius: BorderRadius.all(Radius.circular(8.0))
            )}
            margin={EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0)}
          >
            {Image.asset('images/bg2.jpg')}
          </Container>
          <Column>
            <Text>music</Text>
            <Text style={authorTextStyle}>author</Text>
          </Column>
        </Row> 
        <Align alignment={FractionalOffset.centerRight}>
          <Icon icon={Icons.play_arrow} />
        </Align>
      </Stack>
    </Container>
  )

  <strong i="9">@override</strong>
  Widget build(BuildContext context) {
    return (
      <Container
        height={168.0}
        margin={EdgeInsets.fromLTRB(16.0, 8.0, 16.0, 8.0)}
        decoration={BoxDecoration(
          borderRadius: BorderRadius.all(Radius.circular(8.0)),
          image: DecorationImage(
            image: new AssetImage('images/bg.jpg'),
            fit: BoxFit.cover,
          ),
        )}
      >
        {titleText}
        {music}
      </Container>
    );
  }
}

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬреЛрд░ рджреЗрдиреЗ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рд▓реЛрдЧ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) React.createElement(Component, {}, null) рдХреЗ рд╡рд┐рдкрд░реАрдд <Component /> рдпрджрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрдЧрд╣, рдФрд░ рдпрд╣реА рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдкрдВрджрди рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдПрдХ рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдпред рдпрджрд┐ рдпрд╣ рдЙрд╕ рддрд░рд╣ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдУрд╣ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЯрди рд╡рд░реНрддрдорд╛рди рдкрджреНрдзрддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд JSX рдЬреИрд╕реЗ рд╕рдВрдХреЗрддрди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВрдЧреЗред

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

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

рдореВрд▓ рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдХрдо рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджреЛрдВ рдмрдирд╛рдо async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рд╕реНрдкрдВрджрди рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрд╛рд░ рд╡реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддреЗ рд╣реИрдВ; DSX рдХреЗ рд╕рд╛рде рдЖрдк рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 10 рд▓рд╛рдЗрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ 1 рд▓рд╛рдЗрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрдо рд╢реЛрд░ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдЯреНрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

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

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк/рдореЙрдбрд▓рд┐рдВрдЧ рдбреАрдПрд╕рдПрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдЙрди рднрд╛рд╖рд╛рдУрдВ/рдврд╛рдВрдЪреЗ рд╕реЗ рдЖрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдбрд╛рд░реНрдЯ/рд╕реНрдкрдВрджрди рдХреЗ рд╕рдорд╛рди рд╣реИрдВ (рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдиреНрдп рдЕрд░реНрдердкреВрд░реНрдг рд╡рд┐рд╡рд░рдг - рдореИрдВ рд╕рд╛рджреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реИред

рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд░реНрдЯ рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдмрд▓реНрдХрд┐ рдЕрд╕рдВрднрд╡ рдЖрдИрдПрдордУ)

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

@mraleph рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди/рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЙрд▓ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рди рдХреЗрд╡рд▓ рд╕реВрдЪрд┐рдпреЛрдВ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде - рдпрд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕рдВрднрд╡ рд╣реИред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛!

(рдореИрдВ рдЙрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╡рдЧрдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдерд╛, рдЖрдк рд╕рд┐рд░реНрдл рдПрдХ рдбрд╛рд░реНрдЯ Size(10, 10) рдирд╣реАрдВ рдлреИрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ Size { width: 10, height: 10 } рдХреЛ рдлреИрд▓рд╛/рдирд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рд╕реВрдЪреА рдлреИрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ / рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХрд╛ рдирдХреНрд╢рд╛ ( Function.apply рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░реЗрдЧрд╛))

@filluchaos

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

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

JSX/DSX рд╣реЛрд╕реНрдЯ рднрд╛рд╖рд╛ Javascript/рдбрд╛рд░реНрдЯ рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рд╣реЛрд╕реНрдЯ рднрд╛рд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдкрд░ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдорд╛рдиред

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

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

рдореЗрд░рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдирд▓рд╛рдЗрди DSX рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдареАрдХ рд╕реЗ рдлреИрд▓рд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рджреЗрдЦреЗрдВ:
https://spark-heroku-dsx.herokuapp.com/index.html

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

рд╡рд░реНрддрдорд╛рди рдбрд╛рд░реНрдЯ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЕрдиреНрдп рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓реЗрдХрд░ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдЙрди рднрд╛рд╖рд╛рдУрдВ/рдврд╛рдВрдЪреЗ рд╕реЗ рдЖрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдбрд╛рд░реНрдЯ/рд╕реНрдкрдВрджрди рдХреЗ рд╕рдорд╛рди рд╣реИрдВ (рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдиреНрдп рдЕрд░реНрдердкреВрд░реНрдг рд╡рд┐рд╡рд░рдг - рдореИрдВ рд╕рд╛рджреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реИред

рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ JSX рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА UI рдлреНрд░реЗрдорд╡рд░реНрдХ рд░рд┐рдПрдХреНрдЯ рд╣реИ, рдФрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ рдХрд┐ JSX рдХреЗ рдХрд╛рд░рдг рд░рд┐рдПрдХреНрдЯ рдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред рдХреГрдкрдпрд╛ JSX/DSX рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рд▓реЗрдХрд░ рдЖрдПрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЛрдЧ JSX/DSX рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдмреЗрд╣рддрд░ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдЕрднреА JSX рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рд╣реИ .

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд▓реЛрдЧ рдкрд╛рдЗрдерди (рд╕реВрдЪреА рдФрд░ рд╢рдмреНрджрдХреЛрд╢ рд╕рдордЭ) рдЬреИрд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред

@cbazza

рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ, рдЖрдкрдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рдХрд┐ рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред

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

JSX/DSX рд╣реЛрд╕реНрдЯ рднрд╛рд╖рд╛ Javascript/рдбрд╛рд░реНрдЯ рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рд╣реЛрд╕реНрдЯ рднрд╛рд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдкрд░ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдорд╛рдиред

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

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

рдореЗрд░рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдирд▓рд╛рдЗрди DSX рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдареАрдХ рд╕реЗ рдлреИрд▓рд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рджреЗрдЦреЗрдВ:
https://spark-heroku-dsx.herokuapp.com/index.html

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

рд╡рд░реНрддрдорд╛рди рдбрд╛рд░реНрдЯ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЕрдиреНрдп рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓реЗрдХрд░ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдпреВрдЖрдИ рдбреАрдПрд╕рдПрд▓ рдкрд╕рдВрдж рдЖрдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡рд╣ DSL _Dart_ рдХреЗ рд▓рд┐рдП рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХреЗрд╡рд▓ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рднрд╛рд╖рд╛ рд╕реЗ рдереЛрдХ рдЙрдард╛рдпрд╛ред

рдФрд░ рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд▓реЛрдЧ рдпрд╣ рд╕рдордЭрдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ JSX DSL рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХреБрдЫ рд▓рд╛рдн рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреЗрд╕ рдореЗрдВ рднрд╛рд╖рд╛-рд╕реНрддрд░реАрдп рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рд╣реИрдВред рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдбрд╛рд░реНрдЯ рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреЗрдПрд╕ рдореЗрдВ рд╣реИ рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ return <SomeWidget {...someArgs, arg: newValue } />; рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП return SomeWidget(...someArgs, arg: newValue); рд╕реЗ рдмреЗрд╣рддрд░ рдХреИрд╕реЗ рд╣реИ рдпрд╛ QML-рдЬреИрд╕реЗ return SomeWidget { ...someArgs, arg: newValue }; рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рдХреЛ SGML рд╕реЗ рдХреБрдЫ рд▓рдЧрд╛рд╡ рди рд╣реЛред

@filluchaos

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

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

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

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

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

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

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

рдЕрдкрдиреЗ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдкрдВрдЧ рдбрд╛рд░реНрдЯред

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

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

рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╕рдм рдХреБрдЫ рддрдп рдХрд░рддреА рд╣реИред рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд▓рд╛рднреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд▓реЛрдЧ рдпрд╣ рд╕рдордЭрдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ JSX DSL рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХреБрдЫ рд▓рд╛рдн рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреЗрд╕ рдореЗрдВ рднрд╛рд╖рд╛-рд╕реНрддрд░реАрдп рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рд╣реИрдВред

рдлрд┐рд░ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред

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

@cbazza

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

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

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

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

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

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

рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ JS рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class MyCustomSize {
  constructor(length, width, height) {
    this.length = length;
    this.width = width;
    this.height = height;
    this.calculateVolume.bind(this);
  }

  calculateVolume() {
    return this.length * this.width * this.height;
  }
}

const Cuboid = ({ length, width, height }) => { // blah blah }

const literalSize = { 'length': 30, 'width': 20, 'height': 10 };
const size = new MyCustomSize(30, 20, 10);

size.length = 100; // Can interact with the object as normal, no compromises
console.log(size.getVolume()); // and even call methods
size.foo = 50 // If you're using TypeScript, you get a nice error
literalSize.height = 15 // can interact with the hashmap as though it were an object

const SomeComponent = () => (
  <div>
    <Cuboid {...literalSize} />{/* valid */}
    <Cuboid {...size} />{/* also valid even though size is an object */}
  </div>
)

рд▓реЗрдХрд┐рди рдбрд╛рд░реНрдЯ рдФрд░ рдЖрдкрдХреЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЗ рд╕рд╛рде рддрд░реНрдХреЛрдВ рдХреЗ рд╣реИрд╢рдореИрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

class MyCustomSize {
  int length, width, height;

  MyCustomSize(this.length, this.width, this.height);

  calculateVolume() {
    return length * width * height;
  }
}

class Cuboid extends StatelessWidget {
  final int length, width, height;

  Cuboid(this.length, this.width, this.height);

  <strong i="9">@override</strong>
  Widget build(BuildContext context) { // blah }
}

Map literalSize = { 'length': 30, 'width': 20, 'height': 10 };
Map invalidSize = { 'length': 300, 'width': 200, 'height': 100 };
final size = MyCustomSize(30, 20, 10);

literalSize.height = 15; // Invalid, you must use square bracket notation which is honestly ugly to do a lot of the time
invalidSize['foo'] = 50; // No indication of anything wrong here

class SomeWidget extends StatelessWidget {
  <strong i="10">@override</strong>
  Widget build(BuildContext context) {
    return (
      <Column>
        <Cuboid {...literalSize} />{/* Yes, works */}
        <Cuboid {...invalidSize} />{/* Sure the transpiled code errors as there is no parameter named foo. But this is now a completely opaque error. What if the `foo:50` key-value pair was added in some other section of your codebase? In a third party library even? How do you debug that*/}
        <Cuboid {...size} />{/* How do you plan on handling this as a plain transpilation step? */}
      </Column>
    )
  }
}

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

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

рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╕рдм рдХреБрдЫ рддрдп рдХрд░рддреА рд╣реИред рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд▓рд╛рднреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред

"рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда", рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ рдХрд┐ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рдпреЛрдЧреНрдпрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рд╡реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрднреА-рдХрднреА рдирд╣реАрдВред рдХрднреА-рдХрднреА рдмреБрд░реЗ рд╡рд┐рдЪрд╛рд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрднреА-рдХрднреА рдирд╣реАрдВред рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдпреЛрдЧреНрдпрддрд╛ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдХреЗрддрдХ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрддреБрдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдРрд╕рд╛ рд░рд╡реИрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдбрд╛рд░реНрдЯ рд╕рдореБрджрд╛рдп рдореЗрдВ рдирд╣реАрдВ рдлреИрд▓рд╛рдКрдВрдЧрд╛, рдЬреЛ рдХрд┐ рдЫреЛрдЯрд╛ рд╣реИред

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

... рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╣рдХрджрд╛рд░ рдереЗ, рдФрд░ рдлрд┐рд░ рднреА рд╣рдо рдпрд╣рд╛рдВ рд╣реИрдВред рдпрд╣ рдПрдХ UI SDK рдХреНрдпреЛрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рд╢реНрд╡ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдкреНрд░рд╕реНрддрд╛рд╡ рджреГрдврд╝рддрд╛ рд╕реЗ, " рдореЗрд░реА рднрд╛рд╖рд╛/рдврд╛рдВрдЪреЗ рдореЗрдВ рдбрд╛рд░реНрдЯ/рд╕реНрдкрдВрджрди рдмрдирд╛рдУ" рдХреЗ рд░реВрдк рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ - рдЖрдк рдЕрднреА рднреА рдмрд╛рд╣рд░ рдЖ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрдкрдВрджрди рдРрдкреНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рд╣рд╛рдБ, рдЖрдкрдХреА рдХреЛрд╣рдиреА рдкрд░ рдЕрдзрд┐рдХ рддреЗрд▓ рдФрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрддрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред

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

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

@filluchaos

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

рдореИрдВ рдбрд╛рд░реНрдЯ/рд╕реНрдкрдВрджрди рдЯреАрдо рд╕реЗ рдХреЗрд╡рд▓ рд╡рд╣реА рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛:

What we really need from Google (Dart/Flutter) people is generic transpiling support via source maps so that any higher level language can be developed that targets Dart/Flutter and it would work just fine with the current tools (IDE, debugger, etc). Level the playing field and you guarantee the best ideas will come to the platform from others.

рдпрд╣ DSX, Vue рдШрдЯрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ, Xamarin.Forms, NativeScript, QML, рдЖрджрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдХреЛ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреБрдЫ рднреА рд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдХреЛ рднреА рдореЗрд░рд╛ DSX 'рд▓реЗрдирд╛' рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред DSX рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╕рд╛рджреЗ рдбрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЪреАрдЬрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк https://github.com/dart-lang/build рдФрд░ dartanalyzer рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВред
рдЖрдк рд╢рд╛рдпрдж рдПрдХ рдпрд╛ рджреЛ рдЯреБрдХрдбрд╝реЗ рдпрд╛рдж рдХрд░реЗрдВрдЧреЗ (рдЬреИрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкрдм рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рдЯреАрдо рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдареАрдХ рд╣реИред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдкреНрд░рддрд┐ рдХрдареЛрд░ рд░рд╣рдиреЗ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдврд╛рдВрдЪреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рд╣рдо рдЗрд╕рд╕реЗ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ рдПрдХ рдФрд░ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмрдВрдж рдореБрджреНрджрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдмрд╣реБрдд рдЧрд░реНрдо" рд╣реЛ рдЧрдпрд╛ рд╣реИред

@filluchaos

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

@cbazza рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕/рдЬреЗрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ "рдЖрдк рдХреЗрд╡рд▓ рд╣реИрд╢рдкреИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдпрд╛ "рдЖрдкрдХреЗ рд╕рднреА рддрд░реНрдХ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЬреНрдЮрд╛рдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП" рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╛ "рдЖрдк рдЙрди рддрд░реНрдХреЛрдВ/рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдПрдХ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реА рддрд░рд╣ рдЖрдк рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рдирдХреНрд╢рд╛ рд╢рд╛рдмреНрджрд┐рдХ рдирд╣реАрдВ) -0 рдпрд╣ рд╕рдм рдареАрдХ рд╣реИ рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬ рдХрд┐рд╕реА рднреА рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмреЗрд╣рдж рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ _fast_ рд╣реЛ рдЬрд╛рдПрдЧреАред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдФрд░ рд╕рдордЭреМрддрд╛ рдФрд░ рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рдвреЗрд░ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрддрд╛ рд╣реИ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ?

JSX рдЗрддрдиреА рд╕рдлрд▓ рд░рд╣реА рд╣реИ (рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ _any_ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рджрд░реНрдж рд░рд╣рд┐рдд рд╣реИ; рдПрдХ рдбреАрдПрд╕рдПрд▓ рдмрдирд╛рдХрд░ рдореЗрд░рд╛ рдпрд╣реА рдорддрд▓рдм рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд╖рд╛ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред Redux рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред JS рдХреЛрдбрдмреЗрд╕ рдореЗрдВ Redux рд╕реБрдВрджрд░рддрд╛ рдХреА рдЪреАрдЬ рд╣реИ (рдЬрдм рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ); рджреВрд╕рд░реА рдУрд░ рд╕рднреА рд╕реНрдкрдВрджрди рдЙрджрд╛рд╣рд░рдг рдореИрдВрдиреЗ Redux рдХрд╛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░реАрдо/рдмреАрдПрд▓рдУрд╕реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджрд░реНрджрдирд╛рдХ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕реА рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рд╣реЛрддреА рд╣реИрдВ: рд░рд┐рдПрдХреНрдЯ рдХрд╛ Context рдФрд░ рдлрд╝реНрд▓рдЯрд░ рдХрд╛ InheritedWidget рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдХреА рддрд╛рдХрдд рдХреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ JSX рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рдХрдИ рднрд╛рд╖рд╛-рд╕реНрддрд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ DSX рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд░реНрдж рд╣реЛрдЧрд╛ рдФрд░ рддреБрдЪреНрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд░реНрдж рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ рдХреЛрдИ рд╢рд╛рдпрдж рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдЖрд▓рд╕реА рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛-рдкреВрд░реНрдг JSX рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреНрдпреЛрдВрдХрд┐ JS рдХреЛ рдореИрдк рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рдЖрдХреНрд░рд╛рдордХ рдерд╛ рдФрд░ рдореИрдВ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред

@filluchaos

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

рд╕рдВрдЧреНрд░рд╣ рдлреИрд▓рд╛рдПрдВ
https://github.com/dart-lang/language/issues/47

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

@cbazaa рдореИрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдпрд╛ рд╕реНрдкрдВрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╕реНрдкрдВрджрди рдХреА рдУрд░ рдЭреБрдХрд╛рд╡ рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд┐рд░реНрдл рдбрд╛рд░реНрдЯ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрдХрд▓рдХ рдореЗрд░реЗ рдпреВрдЖрдИ рдЯрд╛рдЗрдкреЛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗред рдпрд╣ рднреА рджреЗрдЦреЗрдВ: https://medium.com/flutter-io/out-of-depth-with-flutter-f683c29305a8

рдХреНрдпрд╛ JSX рдореЗрд░реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рднреА рдЦреЛрдЬрддрд╛ рд╣реИ? рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдПрдЪрдЯреАрдПрдордПрд▓/рдЕрд▓рдЧ рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рдирдлрд░рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдгреАрдп рдореЗрдВ, рдпрджрд┐ рдореИрдВрдиреЗ HTML рдореЗрдВ рдХреБрдЫ / рдЪрд░ рдЧрд▓рдд рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдореЗрд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред

@ рд╢рд┐рд╡рдмреБрджреНрдз

рдХреНрдпрд╛ JSX рдореЗрд░реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рднреА рдЦреЛрдЬрддрд╛ рд╣реИ? рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рд╣рд╛рдВ, JS/ES6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ JSX рдЯрд╛рдЗрдкреЛ рд╕рдВрдХрд▓рди рд╕рдордп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдирд╛рдо) рдкрд░ рдкрдХрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдк рдирд╛рдо рдирд╣реАрдВ (рдЬреЛ рд░рди рдЯрд╛рдЗрдо рдкрд░ рдкрдХрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗ); рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕рднреА JSX рдЯрд╛рдЗрдкреЛ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИ:
https://www.typescriptlang.org/docs/handbook/jsx.html

@cbazza dsx рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ?

@pushqrdx
рдЕрднреА рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ + рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реНрдкрдВрджрди рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЦреБрдж рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЪрд┐рдпрд░реНрд╕

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреАрдПрд╕рдПрдХреНрд╕ рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛? рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛!

рдореИрдВ cbazza рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ Flutter рдореЗрдВ DSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИред

рдореБрджреНрджрд╛ #27141 рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдб рдЬрдирд░реЗрд╢рди рд╕рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред рдпрд╣ https://github.com/dart-lang/build рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Builder рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдбреАрдПрд╕рдПрдХреНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░/рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреЛ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрддрдиреА рдЬрд┐рджреНрджреА рдЯреАрдо рд╕реЗ рдорд┐рд▓рд╛ред

рдпрд╣ JSX рдХреА рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдирд░реНрдХ рдХреА рдЪрд░реНрдЪрд╛ рд╣реИ

рдпрджрд┐ рдЖрдк JSX рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рднреА рдЖрдкрдХреЛ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрдо рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JSX рдХрд╛ рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрдВрджрди рдЯреАрдо рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИред

JSX рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреА рд╣реИ

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ JSX рдХреНрдпреЛрдВ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдпрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ h/createElement рдлрд╝рдВрдХреНрд╢рди рдЦрд░рд╛рдм рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдЦрд░рд╛рдм рдкрдардиреАрдп рд╣реИред рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рд╕реНрдкрдВрджрди рдЕрдм h/createElement рдлрд╝рдВрдХреНрд╢рди рд╕реЗ 10,000 рдЧреБрдирд╛ рдЦрд░рд╛рдм рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдВрдЦреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

JSX рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ, рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ HTML рдХрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди/рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдФрд░ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИред

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:

  1. рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕реНрдкрдВрджрди рд╡рд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

  2. рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП dartfmt рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рдбрд╛рд░реНрдЯ рдкреИрдХреЗрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрд╡рд░реВрдкрдг рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрдиреВрдард╛ рд╕реЗрдЯ рд╣реИ рдФрд░ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓рдЯрд░/рдбрд╛рд░реНрдЯ рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред @ рдЙрджрд╛рд░

  3. рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдирдВрдмрд░ 1 рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП @rrousselGit рдХреЗ @stateless рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

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

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

рдпрд╣ рджреЛрдиреЛрдВ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИ, рдЕрддрд┐рд░реЗрдХ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрдЧ рдХреЛ рднреА рдареАрдХ рдХрд░рддрд╛ рд╣реИ/рдкрд░рдл рдмрдврд╝рд╛рддрд╛ рд╣реИред

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

JSX рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ, рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ HTML рдХрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди/рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕ рддрдереНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ HTML рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ?

рдЖрдк рдЗрд╕ рддрдереНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ HTML рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ?

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рд╢рд╛рдпрдж рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХрд╛ рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рд╢рд╛рдпрдж рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХрд╛ рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ

рддреЛ JSX рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ HTML рдХрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @lukepighetti рдмрддрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рдПрдХ XML-like syntax extension to ECMAScript without any defined semantics... who's purpose is to define a concise and familiar syntax for defining tree structures with attributes. рд╣реИ
рдпрд╣ рд╕рдм рдХрд▓реНрдкрдирд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: https://facebook.github.io/jsx/

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд░рд┐рдПрдХреНрдЯ рдХреЛ рдкрд╣рд▓реЗ react + react-dom рдХреЗ рд░реВрдк рдореЗрдВ jsx рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП HTML + рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд╢реНрд░рдг рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдерд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, react рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рд░реЗрдВрдбрд░рд░реНрд╕ рдЬреИрд╕реЗ react-native , react-vr , react-pdf , рдЖрджрд┐ рдЖрджрд┐ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рдореВрд▓ рдХрдерди рдХреЗ рд╕рд╛рде рдЦрдбрд╝рд╛ рд╣реВрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рд╡рдВрд╢рд╛рд╡рд▓реА рдХреЗ рдкреНрд░рддрд┐ рдЙрдЪрд┐рдд рдФрд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ред 2019 рдХреА рдХрд▓реНрдкрдирд╛ 2019 рдХреА рдХрд▓реНрдкрдирд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ

рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рднреА рдмрдбрд╝рд╛ рдорд╕рд▓рд╛ рд╣реИред рдЙрд╕ рдкрд╣рд▓реВ рдореЗрдВ Vue рдФрд░ React рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рд░рд┐рдПрдХреНрдЯ рдореЗрдВ createElement рд╣реИ рдФрд░ Vue рдореЗрдВ h рдлрд╝рдВрдХреНрд╢рди рд╣реИред

рд╣рдо рдХрднреА рднреА рд░рд┐рдПрдХреНрдЯ рдФрд░ рд╡реАрдпреВ рджреЛрдиреЛрдВ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред


рд╕реНрдкрдВрджрди рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реАрдзреЗ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдкрдВрджрди рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, <Foo /> рдХрд╛ рдЕрд░реНрде рд╣реИ new Foo()

рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, JSX рд╡рд┐рдЬреЗрдЯреНрд╕ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╣рдо рд╕рд┐рд░реНрдл рдбрд╛рд░реНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд░реНрде рдЦреЛ рд░рд╣реЗ рд╣реИрдВред

@lukepighetti
react-pdf рдПрдХ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реЗрдВрдбрд░рд░ рдирд╣реАрдВ рд╣реИ, рдЖрдк react-canvas рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред
рддреЛ react != react-dom != react-native ред react рдкреИрдХреЗрдЬ JSX рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдШрдЯрдХ рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП react рдХреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ react-dom , react-native рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ react-canvas , рдЗрд╕рд▓рд┐рдП react рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ HTML рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

2019 рдХреА рдХрд▓реНрдкрдирд╛ 2019 рдХреА рдХрд▓реНрдкрдирд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

JSX рдХреЗ 2019 рд╕реНрдкреЗрдХ рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИред JSX рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ (https://facebook.github.io/jsx/) рд╕реЗ 2014 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

@rrousselGit

рд╣рдо рд╕рд┐рд░реНрдл рдбрд╛рд░реНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред

рд╕реНрдкрдВрджрди рдХреЗ рд╕рд╛рде рдбреАрдПрд╕рдПрдХреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдареАрдХ рдпрд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд░реНрде рдЦреЛ рд░рд╣реЗ рд╣реИрдВред

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

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдореЗрд░реЗ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рддрдлрд╣рдореА рд╣реЛ рд╕рдХрддреА рд╣реИред react рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЛ рдбреНрд░рд╛рдЗрд╡ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ react-dom , react-native , react-pdf , react-vr , рдЖрджрд┐ред рдЕрдлреИрдХ, react рдФрд░ react-dom рдПрдХ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдереЗ рдЗрд╕рд▓рд┐рдП jsx рдХреА рд╡рд┐рд░рд╛рд╕рдд, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реЗ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЦреБрджрд╛рдИ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдкрдВрджрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ JSX рдХреЗ рдореВрд▓реНрдп рдкрд░ рд╣рдорд╛рд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдп рд╣реИред рд╢рд╛рдпрдж рдЗрд╕реЗ рд╡рд┐рд╖рдп рдкрд░ рд░рдЦрдирд╛ рдФрд░ рдмрд╛рд▓реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рди рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

рдореБрдЭреЗ рдЕрдм рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Google JSX рдХреА рд╕реБрдВрджрд░рддрд╛ рдХреЛ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рд▓реЛрдЧ рдереЗ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣реЗ рдереЗред Google рдЯреАрдо рдПрдХ рджрд┐рди рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЗрд░рд┐рдд рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП DSX рдпрд╛ JSX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреА рд╣реИ, рд╕реНрдкрдВрджрдиред

рд╣рд╛рдп рд▓реБрдХреЗрдкрд┐рдШреЗрдЯреА, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдПрдХ рд╕реЗ рджреЛ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП JSX рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ JSX рдФрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ (рдпрд╛ рд░рд┐рдПрдХреНрдЯ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдРрдк рдмрдирд╛рдирд╛ рд╕рд░рд▓ рдФрд░ рдЕрдЪреНрдЫреА рд╕рдВрд░рдЪрдирд╛ рд╣реИред

рдореИрдВ lukepighetti рдХреЗ рд▓рд┐рдП рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рджреЛ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдкреЗрд╢реЗрд╡рд░ рд░реВрдк рд╕реЗ React рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдм рдХреБрдЫ Vue рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП рдЬрдм JSX рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рдореИрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдХрд┐рдл рд╣реВрдВред

рдЗрд╕реА рддрд░рд╣ рдореИрдВ рднреА рд▓рдЧрднрдЧ 2 рд╕рд╛рд▓ рд╕реЗ Flutter рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдпрд╣ рднреА рд╕реЛрдЪрд╛ рдХрд┐ рд╕реНрдкрдВрджрди рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ JSX рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЙрд╕ рдЕрд╡рдзрд┐ рдореЗрдВ рд╕реНрдкрдВрджрди рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рд╣реБрдЖ рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ред

  • JSX рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрдирд╛ рднрдпрд╛рдирдХ рд╣реИред рдЗрд╕реЗ рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреВрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдСрдЯреЛ-рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ, рдСрдЯреЛ рд░реАрдиреЗрдорд┐рдВрдЧ рдЯреИрдЧ рдФрд░ рдПрдореНрдореЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рднреА рдпрд╣ рдлрд╝реНрд▓рдЯрд░ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Foo() рд╕реЗ Foo(child: Bar()) рддрдХ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рд▓реЗрдХрд┐рди <Foo /> рд╕реЗ <Foo><Bar /></Foo> рддрдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

  • рд╕реНрдкрдВрджрди рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ

  • рдлрд╝реНрд▓рдЯрд░ рджреНрд╡рд╛рд░рд╛ рдСрдлрд╝рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧреНрд╕ рдПрдВрдбрд┐рдВрдЧ рдЯреИрдЧреНрд╕ рдХреА рдХрдореА рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред
    _рд▓реЗрдХрд┐рди рд╡реЗ рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ!_
    рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ! рдЖрдк рдЕрдкрдиреЗ рдЖрдИрдбреАрдИ рд╕реЗ рдЕрдкрдиреА рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЗрдЦреЗрдВ https://code.visualstudio.com/blogs/2018/09/10/introducing-github-pullrequests

    • JSX рд╕реНрдкрдВрджрди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдЬреЗрдЯ child рдФрд░ children рджреЛрдиреЛрдВ рд▓реЗрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

<Foo
  child={<Bar />}
>
  <Bar />
</Foo>

?

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП child рдХреЛ рд╣рдореЗрд╢рд╛ children рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд╛рдорд┐рдд рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдмрд╣реБрдд рдХрдо рд╡рд┐рдЬреЗрдЯ children рд▓реЗрддреЗ рд╣реИрдВред рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдпрд╛ рддреЛ рдПрдХ child , рдпрд╛ рдХрд╕реНрдЯрдо рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ (рдЬреИрд╕реЗ Scaffold ) рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдЬреЗрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдВрдЧреЗ:

<Container
  child={<Bar />}
/>

рдЬреЛ _рдмрджрддрд░_ рддрдм рд╣реИ:

Container(
  child: Bar(),
)

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

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

* рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рд╕реЗ рдКрдкрд░ рд╣реИ, рдлрд╝реНрд▓рдЯрд░ рдХреЛ рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкреНрд░рдореБрдЦ рд╡рд┐рд░реЛрдз рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдВрджреБ рд╣реИ рдХрд┐ JSX/React рдХреА рд╡реЗрдм рдореЗрдВ рдЧрд╣рд░реА рдЬрдбрд╝реЗрдВ рд╣реИрдВ, рдФрд░ DOM рддрддреНрд╡реЛрдВ рдореЗрдВ _attributes_ рдФрд░ _children_ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рдорд╛рдирдХ рд╣реИред рджреВрд╕рд░реА рдУрд░ рдлрд╝реНрд▓рдЯрд░ рдЕрдиреНрдп рд╡рд┐рдЬреЗрдЯ children рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ child рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕реНрд▓реЙрдЯ рдХрд╛ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд╡реЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╢реВрдиреНрдп рдХрд╛рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдЬреЗрдЯ child рдФрд░ children рджреЛрдиреЛрдВ рд▓реЗрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

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

@rrousselGit

JSX рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрдирд╛ рднрдпрд╛рдирдХ рд╣реИред рдЗрд╕реЗ рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреВрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ,

рди рдХреЗрд╡рд▓ рдкреВрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреБрдирд┐рдпрд╛ рдЖрдкрд╕реЗ рдЕрд╕рд╣рдордд рд╣реИ рдмрд▓реНрдХрд┐ рдкреВрд░реА HTML рджреБрдирд┐рдпрд╛ рдФрд░ рдПрдХреНрд╕рдПрдордПрд▓ рджреБрдирд┐рдпрд╛ рднреА рдЕрд╕рд╣рдордд рд╣реИред

рд╕реНрдкрдВрджрди рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ

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

рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ! рдЖрдк рдЕрдкрдиреЗ рдЖрдИрдбреАрдИ рд╕реЗ рдЕрдкрдиреА рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

JSX рд╕реНрдкрдВрджрди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдкрдХреА рдмреБрд░реА рд░рд╛рдп рд╣реИ, рдХреЛрдИ рднреА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ DSX JSX рдореЗрдВ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрдВрджрди рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
https://spark-heroku-dsx.herokuapp.com/index.html

рддреЛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╕реНрдкрдВрджрди 'рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреВрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ'

рдирд╣реАрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ "рдФрд░ рднреА рдЖрд╕рд╛рди" "рд╕рд╣рдиреЗ рдпреЛрдЧреНрдп" рдирд╣реАрдВред

рдореИрдВ рдЕрдХреНрд╕рд░ StackOverflow/Slack рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдХрднреА-рдХрднреА рдЕрдкрдиреЗ рдлреЛрди рд╕реЗ рднреАред
рдФрд░ html рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмреБрд░рд╛ рд╕рдордп рд╣реИ - рд▓реЗрдХрд┐рди рд╕реНрдкрдВрджрди рдареАрдХ рд╣реИред

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

рдпрд╣ рджреВрд╕рд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдореБрджрд╛рдп JSX рдХрд╛ 100% рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рджреЛрдиреЛрдВ рдкрд░ рдбрд╛рдЙрдирд╡реЛрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рддреА рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдкрдХреА рдмреБрд░реА рд░рд╛рдп рд╣реИ, рдХреЛрдИ рднреА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ DSX JSX рдореЗрдВ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрдВрджрди рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВред рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрдИ рдХреАрдмреЛрд░реНрдб рд▓реЗрдЖрдЙрдЯ рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕рдореЗрдВ рджреЛрд╣рд░рд╛рд╡ рдХреЗ рдЯрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред


рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЗрддрдиреЗ рдЖрдХреНрд░рд╛рдордХ рдХреНрдпреЛрдВ рд╣реИрдВред рд╣рдо рд╕рднреА Flutter рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХрдареЛрд░ рд╣реЛрдиреЗ рдФрд░ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

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

рдПрдХ рдЕрдиреНрдп рдкрдХреНрд╖ рдХрд╣рд╛рдиреА рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред

рдПрдХ рдЕрдиреНрдп рдкрдХреНрд╖ рдХрд╣рд╛рдиреА рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ-рд▓реИрдВрдЧ/рднрд╛рд╖рд╛ рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реИ: https://github.com/dart-lang/language/issues/69
рдЬрд╛рдУ рдЗрд╕реЗ рдПрдХ

рдпрд╣ рд▓рдВрдмреА рдЪрд░реНрдЪрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ:

<A property="a">
  <B/>
  <C/>
</A>

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛:

A(property: a, children: [
   B(), 
   C()
])

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

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

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

рдЕрд░реЗ рдореИрдВ-рд╢реВрдПрдЯреНрдЬрд╝ред
рдПрдХ рдЙрддреНрддрд░ рдЦрдВрдб рд╣реИред

image

рдореИрдВ рдЗрд╕ рд▓рдВрдмреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдпрд╣реА рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред JSX рдиреЗ "HTML рдФрд░ XML рдХреА рд╕реНрдкреЗрдЧреЗрдЯреА рд╕рдорд╕реНрдпрд╛" (рдЕрдкрдардиреАрдп рдФрд░ рдЬрдЯрд┐рд▓ UI рдХреЛрдб) рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред рд╕реНрдкрдВрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп рдореЗрдВ, рдпрд╣ JSX рдпрд╛ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

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

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реВрдВред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ JSX рд╕реАрдЦрдирд╛ рдЖрд╕рд╛рди рд▓рдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ HTML рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдорд╛рди рд╣реИред рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ JSX рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реНрдкрдВрджрди рдХреА рдирдХрд▓ рдХреЛ рднреА рдХрдо рдХрд░рддрд╛ рд╣реИред

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

@JonathanSum JSX рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдкрдВрджрди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдпрд╛ рд╕реНрдкрдВрджрди _React_ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдШрд░реНрд╖рдг рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИ, рд╣рд╛рдБ, рдФрд░ рдПрдХ рдЖрдИрдбреАрдИ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдЯреИрдЧ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдлреА рдХрдо рдкрдардиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдПрдордПрд▓-рдЬреИрд╕реЗ рдбреАрдПрд╕рдПрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ _complicated_ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдПрдордПрд▓ рдЬреИрд╕рд╛ рдбреАрдПрд╕рдПрд▓ рдПрдХ рдЪрд╛рдВрджреА рдХреА рдЧреЛрд▓реА рд╣реЛрдЧреА рдЬреЛ рд╕реНрдкрдВрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ _рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧреАред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреВрд░реНрд╡ рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ/рдЬреЗрдПрд╕рдПрдХреНрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд░рд┐рдПрдХреНрдЯ рдбреЛрдо рд╣реЗрд░рдлреЗрд░ рдХреЛ рдЖрд╕рд╛рди рдФрд░ рдХреНрд▓реАрдирд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдлрд╝реНрд▓рдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?

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

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

рд╡рд╣рд╛рдБ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ https://github.com/munificent/ui-as-code

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

рдмреЗрд╢рдХ, рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрд▓рдЧ рдФрд░ рдХрдЫреБрдЖ рдХреЗ рдЦрд┐рд▓рд╛рдл рджреМрдбрд╝ рдореЗрдВ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдЖрдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рд╣реИ

рдЕрдм рдореИрдВ JSX рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕реНрдкрдВрджрди рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рджрдмрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реВрдВред

рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдбрд╛рд░реНрдЯ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдпрд╣ рдЬреЗрдПрд╕ рдпрд╛ рдЯреАрдПрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИред рдореБрдЭреЗ рдЕрд╕рд╣рд╛рдп рдорд╣рд╕реВрд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft UI рддрдХрдиреАрдХ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдорд╛рд░реНрдЧ WinForm рд╕реЗ WPF рддрдХ рд╣реИя╝МрдФрд░ рдЕрдм Flutter рдореЗрдВя╝МWPF рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп WinForm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВуАВрдбреЗрд╡рд▓рдкрд░ рдХреА рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, Flutter рдЯреАрдо рдиреЗ WinForm рдХреА рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡рд┐рдВрдбреЛ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдбрд┐рдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА

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

рдореИрдВ рдЗрд╕ рд╕рдордп рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд░реНрдЧ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдФрд░ рд╕рд╣рдпреЛрдЧреА рдХреА рдЫрд╡рд┐ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВ рдПрдХ рдбрд╛рд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдкреНрд░рд╕реНрддреБрдд рд╕рд╛рдордЧреНрд░реА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ 5-6 рдорд┐рдирдЯ рд▓рдЧреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...

рдореИрдВ рдПрдХ рд╕рд╛рджреЗ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ 5 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдЕрд░реНрдз-рдЬрдЯрд┐рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╣рдЬ рд╣реИ

рдореИрдВ рд╕реНрдкрдВрджрди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдореИрдВ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдХреБрдЫ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ -.-

рд╣рд╛рд▓рд╛рдВрдХрд┐ред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдбрд╛рд░реНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ "рд╕рдорд╕реНрдпрд╛" рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдбрд╛рд░реНрдЯ 2 рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗ dart 3 -4 -5 рдореЗрдВ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕рдорд╛рд░реЛрд╣ рдХреА рдПрдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧреАред

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

рдЙрдиреНрд╣реЛрдВрдиреЗ DSX рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рд╡реЗ JSX рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╕реНрдкрдВрджрди рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдмреЗрд╣рддрд░ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП UI рдШреЛрд╖рдгрд╛ рдХреЛ рдХреЛрдб рдореЗрдВ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдЯреАрдореЛрдВ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЬреВрдирд┐рдпрд░/рдорд┐рдбрд▓ рд╣реЛрддреЗ рд╣реИрдВред Adobe Flex рд╕реЗ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ Flutter рдХреА UI рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмреБрд░реА рддрд░рд╣ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдпрджрд┐ рдбреАрдПрд╕рдПрдХреНрд╕ рдирд╣реАрдВ (рдЬреЛ рдХрд┐ рднрдпрд╛рдирдХ рдЖрдИрдПрдордУ рд╣реЛрдЧрд╛) рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЖрдИрдбреАрдИ рд╕реНрддрд░ рдкрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рднреА рдкреВрд░реНрд╡ UI рд╡рд┐рдХрд╛рд╕ рдврд╛рдВрдЪреЗ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдереА рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдмреЗрд╣рддрд░ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП UI рдШреЛрд╖рдгрд╛ рдХреЛ рдХреЛрдб рдореЗрдВ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 'рдЧреБрдИ рдмрд┐рд▓реНрдбрд░реНрд╕' рдЬреИрд╕реЗ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдПред

Adobe Flex рд╕реЗ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ Flutter рдХреА UI рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмреБрд░реА рддрд░рд╣ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдлрд╝реНрд▓рдЯрд░ рдкрд╛рд╡рд░ рдХреЗ рд╕рд╛рде рдПрдордПрдХреНрд╕рдПрдордПрд▓ рдЬреИрд╕реЗ рдпреВрдЖрдИ рдШреЛрд╖рдгрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ! рдореИрдВ рдХреЗрд╡рд▓ рд╕рдкрдирд╛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ!

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

@Hixie рдХреЛрдбрдЬреЗрди рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реВрдЪрдХ рд╣реИ?

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

рдпрд╣ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ codegen рд╕рд┐рд░реНрдл .dart -> .dart рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдорд╛рдиреНрдп .dart рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ .dsx рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд╛рд░реНрдЯ рдХрд╛ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдЬреИрд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде .dart рдореЗрдВ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рджреЗрдВ, рдЬреЛ рдХрд▓ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдирдЬрд╝рд░ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ-рдЬреИрд╕реЗ рдорд╛рд░реНрдХрдЕрдк рдХреЗ рдмрдЬрд╛рдп рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рд▓рдХреНрд╖реНрдп рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдХреЗрд▓реЗ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рдирд┐рд╣рд┐рдд рд╕рджрд╕реНрдп рднрд╛рд╡ рдЗрддрдиреЗ рдЕрджреНрднреБрдд рд╣реЛрдВрдЧреЗ

рдореИрдВ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд┐рд╢реНрд░рд┐рдд рд╣реВрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓реНрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкрд╣рд▓реВ рдЬрд╛рджреБрдИ рд▓рдЧрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдо рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

Column(mainAxisSize: MainAxisSize.min)([
  if (foo) Text('foo'),
  Text('bar'),
]);

рдпрд╣ рд╡реИрдз рдбрд╛рд░реНрдЯ рдХреЛрдб рд╣реИ, рдЬрд╣рд╛рдВ Column _still_ рдПрдХ рд╡рд░реНрдЧ рд╣реИред

рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╡рд┐рдЬреЗрдЯ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

class Foo extends StatelessWidget {
  const Foo({Key key}) : this._(key: key);
  const Foo._({Key key, this.children}) : super(key: key);

  final List<Widget> children;

  <strong i="12">@override</strong>
  Widget build(BuildContext context) {
    return Column(children: children);
  }

  Foo call(List<Widget> children) {
    return Foo._(key: key, children: children);
  }
}

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


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рджреЛрдиреЛрдВ рдХреЙрдиреНрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЦреЛ рд░рд╣реЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдФрд░ рд╡рд┐рдЬреЗрдЯ рдХреНрд▓рд╛рд╕ _twice_ рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рд╡рд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ call рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@rrousselGit рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рдХреМрди рд╕реЗ рдкрд╣рд▓реВ рдЖрдкрдХреЛ рдЬрд╛рджреБрдИ рд▓рдЧрддреЗ рд╣реИрдВ - рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдлреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдмрд╣реБрдд рд╕реАрдзрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╕реЗ рдЙрдирдХреЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд░:

  • Content рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Mobx / Vue рд╕реНрдЯреЛрд░ рд╣реИ?
  • рд╡рд╣ @State рдХреНрдпрд╛ рд╣реИ?
  • body рдПрдХ рдЪрд░ рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЧреЗрдЯрд░ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЧреЗрдЯрд░ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  • body рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдпрд╛ рдХрдИ рд╕рдорд╛рди рдЪрд░ Content рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ?
  • рд╡рд╣ item in _рдмрд┐рд▓реНрдХреБрд▓_ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? in рдХрд╛ рд╕рд╣реА рдСрдкрд░реЗрдВрдб рдХреБрдЫ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдкрд░рд┐рдгрд╛рдо" рд╣реИ?
  • рдЬрдм рдХреЛрдИ HStack рдирд╣реАрдВ рд╣реИ рддреЛ Image рдХреЛ рд╢реАрд░реНрд╖рдХ/рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдХреЛ рдЙрдард╛рддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдереЗред

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

  • рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдирд╣реАрдВ рд╣реИ (рдбрд╛рд░реНрдЯ рдпрд╛ рдЬреЗрдПрд╕ рдЕрд░реНрде рдореЗрдВ) рд╣рд╛рд▓рд╛рдВрдХрд┐? рдпрд╣ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ MobX/Vue- рд╢реИрд▓реА рдХреЗ рд╕реНрдЯреЛрд░ (рдпрд╛рдиреА рдмрд╣реБрдд рд╕реАрдорд┐рдд рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдкрд░ рдкреЗрдкрд░рд┐рдВрдЧ) рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ

  • @State рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдбрд╛рд░реНрдЯ), рдЕрдиреНрдпрдерд╛ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛрдб рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рднреА рдпрд╣ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд░рд╛рдЬреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

  • body рдПрдХ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬреЛ рд╕реНрд╡рд┐рдлреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЬрдм рдЗрд╕рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреНрдпрд╛ Widget build(BuildContext context) рднреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?

  • Content (рд╕реНрд╡рд┐рдлреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ) View рд╡рд┐рд╕реНрддрд╛рд░/рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЗ рдЙрддреНрддрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗ (рдЗрд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рд╕рдВрджрд░реНрдн рдкреГрд╖реНрда рд╣реИ)ред

  • рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ "рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдХреАрд╡рд░реНрдб рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдореЗрдВ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рдорд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ", рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдЬрд╛рджреБрдИ" рдХреБрдЫ рднреА рдирд╣реАрдВред рдпрд╣рд╛рдВ in рдХреАрд╡рд░реНрдб for...in рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрдВрдж рд╣реЛрдиреЗ рдХрд╛ рд╢рд░реАрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред { item in ... } рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рд╣реИ рдЬреЛ List рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдПрдХ ListView рдХреЗ itemBuilder , рдпрджрд┐ рдЖрдк рдХрд░реЗрдВрдЧреЗред

  • рдХреНрдпрд╛ рдЖрдк рд╡реИрдз рд░реВрдк рд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рджреГрд╢реНрдп рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд▓реЗрдЖрдЙрдЯ рдирд┐рдпрдо рдХреНрдпреЛрдВ рд╣реИрдВ?

рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдкрд░:

1-рд╡реНрдпреВ рдореЗрдВ рдШреЛрд╖рд┐рдд рд░рд╛рдЬреНрдп рдХреЛ рджреЗрдЦрдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдФрд░ рд╕рд╛рдЗрдб рдПрдкреЗрдВрдбреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред

2-рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЪреАрдЬреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ (рддрд░реАрдХреЗ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ)ред

3- рдШреЛрд╖рдгрд╛рддреНрдордХ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдЕрдиреНрдп рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рдШреЛрд╖рдгрд╛рддреНрдордХ рдПрд╕рд╡реАрдЬреА рдЬреИрд╕реЗ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛) !!!
https://developer.apple.com/tutorials/swiftui/drawing-paths-and-shapes

4-рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдПрдиреАрдореЗрд╢рди рдФрд░ рд╕рдВрдХреНрд░рдордг рдирд┐рд░реНрдорд╛рдг
https://developer.apple.com/tutorials/swiftui/animating-views-and-transitions

5-рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХ рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреВрд▓ рдХреЛ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЫреЛрдбрд╝реЗрдВред

рд╣рд░ рдЪреАрдЬ рдХреА рддрд░рд╣ рдорд╕реНрд╕реЗ рднреА рд╣реЛрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред

рдпреЗ "рдкреНрд░рд╢реНрди" рдХреЗрд╡рд▓ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИрдВред рдпреЗ _рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╢реНрди_ рдирд╣реАрдВ рд╣реИрдВред

рдпрд╣ рдЖрдкрдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рдХрд┐ рдЙрдирдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЦрд░рд╛рдм рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░ред рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдирд╣реАрдВ рд▓рдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдкрдВрджрди рдХреЗ рд╕рд╛рде рд╣реБрдЖред
рд╕реНрдкрдВрджрди рд╡рд┐рдЬреЗрдЯ рд▓рдЧрднрдЧ "рдлреИрдВрд╕реА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдЧрд░ / рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рдЬрдмрдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХрд╛ рдЙрдирдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдлреНрдЯ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдЗрд╕рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╡рд┐рдЬреЗрдЯ рдмрд┐рд▓реНрдб (рдмрд┐рд▓реНрдбрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджрд░реНрдн) рднреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ State рдФрд░ body рдХреЗ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреА рдХрдореА рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реНрдкрдВрджрди рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ: setState.
Vue/Mobx рд╕рдорд╛рди @State рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП "рдЬрд╛рджреБрдИ" рд╣реИрдВред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдкреИрдЯрд░реНрди рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╡реИрдз рд░реВрдк рд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рджреГрд╢реНрдп рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд▓реЗрдЖрдЙрдЯ рдирд┐рдпрдо рдХреНрдпреЛрдВ рд╣реИрдВ?

рдирд╣реАрдВ, рдпрд╣ "рд╕реНрдкрд╖реНрдЯ" рдмрдирд╛рдо "рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд" рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рдХреЛрдб рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ" рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛, рднрд▓реЗ рд╣реА рдпрд╣ рдХреБрдЫ рддрд░реНрдХ рдЫреБрдкрд╛рддрд╛ рд╣реЛ (рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, ltr рдмрдирд╛рдо rtl рддрд░реНрдХ)

рд╕реНрдкрдВрджрди рдЖрдкрдХреЛ Row рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛ред

рд╕реНрдкрдВрджрди рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдлреИрдВрд╕реА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдкрдврд╝реЗрдВ: рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ рдХрд┐ рд╕реНрдкреАрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░/рдпрд╛ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИ)ред рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ, рдирд┐рд░рдВрддрд░ рд░рдЪрдирд╛рдХрд╛рд░ (рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреА рдбрд╛рд░реНрдЯ рдХреА рд╢реИрд▓реА), рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ, рдХрдХреНрд╖рд╛рдПрдВ рдирд┐рд╣рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ, @covariant , рдФрд░ рдорд┐рд╢реНрд░рдг рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рднреНрд░рдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХрдореБрд╢реНрдд рд▓реЗрдмрд▓рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреА рд╣реИрдВ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХреЛрдб рдЧрдВрдзред рдореИрдВ рд╢рд╛рдпрдж рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реВрдВред рдФрд░ рдпрд╣ рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЕрднрд┐рдпреЛрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХрд╛ рдПрдХ рдЕрднрд┐рдпреЛрдЧ рд╣реИ - рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рдпрд╣ рдХреНрдпреЛрдВ рд╕реЛрдЪреЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдирд╛ рдПрдХ рдЧреБрдг рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХреЗ - рдХреНрдпрд╛ рд╣реИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмрд┐рдВрджреБ рдЕрдЧрд░ рд╣рдо рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рдорддрднреЗрдж рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ?

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

рд╕реНрдкрдВрджрди рдЖрдкрдХреЛ Row . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛

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

рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред

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

рдмрд╛рдХреА рдЪрд░реНрдЪрд╛ рдХреБрдЫ рд╣рдЯрдХрд░ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рд╣рдо рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрд╕ рднрд╛рдЧ рдХреЛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдореЗрд░рд╛ рдЬреАрдердм рдореЗрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдпрд╣ рд▓реЙрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдкрд╣рд▓реЗ рдПрдХ рдмрдВрдж рдореБрджреНрджрд╛ рдерд╛ред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рд╣реИ:
https://github.com/danialdezfouli/flutterjsx
https://www.npmjs.com/package/flutterjsx
https://www.youtube.com/watch?v=Oj1JMSurphA

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

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

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

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

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

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

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

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