Ember.js рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ред рд╕реБрдкрд░ рдХрд┐рд░рд╛рдпрд╛ рдРрдкред рднрд╛рдЧ 1.2

рд╣рдо Ember.js рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб рд╕реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИред рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдкрд╣рд▓реА рдЫрдорд╛рд╣реА рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ


рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рд╖рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ:


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

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


рдШрдЯрдХ рд╡рд┐рд╡рд░рдг


рдпрд╣ рдЕрдВрддрддрдГ рдХрд┐рд░рд╛рдпреЗ рдХреА рд╕реВрдЪреА рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ:



рдХрд┐рд░рд╛рдпреЗ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдЗрд╕ рд╕реВрдЪреА рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗ:


  • рдШрдЯрдХ рдкреАрдврд╝реА
  • рдиреЗрдорд╕реНрдкреЗрд╕ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХрд╛ рдЖрдпреЛрдЬрди
  • рдЕрдЧреНрд░реЗрд╖рдг HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде ...attributes
  • рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдХреА рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг

рдШрдЯрдХ рдкреАрдврд╝реА


рдЪрд▓реЛ <Rental> рдШрдЯрдХ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдПрдХ рдШрдЯрдХ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:


 $ ember generate component rental installing component create app/components/rental.hbs skip app/components/rental.js tip to add a class, run `ember generate component-class rental` installing component-test create tests/integration/components/rental-test.js 

рдЬрдирд░реЗрдЯрд░ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджреЛ рдирдИ рдлрд╛рдЗрд▓реЗрдВ app/components/rental.hbs : app/components/rental.hbs рдореЗрдВ рдХрдВрдкреЛрдиреЗрдВрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ tests/integration/components/rental-test.js рдореЗрдВ рдХрдВрдкреЛрдиреЗрдВрдЯ рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓ред


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



рдлрд┐рд░ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рднреА рд╡рд┐рд╡рд░рдг рдореМрдЬреВрдж рд╣реИрдВред рд╣рдо рдЕрдкрдиреА рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░реАрдХреНрд╖рд╛ рдХреА рдЬрдЧрд╣ рд▓реЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ <Jumbo> рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛:



рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



рдЕрдВрдд рдореЗрдВ, рдкреЗрдЬ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред



рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкреГрд╖реНрда рдкрд░ рддреАрди рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдЧреНрд░реИрдВрдб рдУрд▓реНрдб рдореЗрдВрд╢рди рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП <Rental> рдШрдЯрдХ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:



рдереЛрдбрд╝реЗ рд╕реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ!


рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХрд╛ рдЖрдпреЛрдЬрди


рдЕрдЧрд▓рд╛, рдХрд┐рд░рд╛рдпреЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд╡рд┐ рдЬреЛрдбрд╝реЗрдВред рд╣рдо рдлрд┐рд░ рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:


 $ ember generate component rental/image installing component create app/components/rental/image.hbs skip app/components/rental/image.js tip to add a class, run `ember generate component-class rental/image` installing component-test create tests/integration/components/rental/image-test.js 

рдЗрд╕ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдирд╛рдо рдкрд░ / рдереАред рдЗрд╕рд╕реЗ app/components/rental/image.hbs рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг app/components/rental/image.hbs , рдЬрд┐рд╕реЗ <Rental::Image> рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


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


рдЕрдЧреНрд░реЗрд╖рдг HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде ...attributes


рдЪрд▓реЛ рдШрдЯрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:



<img> рдореЗрдВ src рдФрд░ alt рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдП, рд╣рдордиреЗ рдХреАрд╡рд░реНрдб ...attributes рдЪреБрдирд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА-рдХрднреА "splattributes" рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕ рдШрдЯрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:



рд╣рдордиреЗ рдпрд╣рд╛рдВ HTML рд╡рд┐рд╢реЗрд╖рддрд╛ src рдФрд░ alt рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ ...attributes рдШрдЯрдХ рдШрдЯрдХ рдореЗрдВ ...attributes рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ {{yield}} рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдерд╛ рдЬрдм рд╣рдордиреЗ class <LinkTo> рдХреЛ <LinkTo> ред



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░рд╛ <Rental::Image> рдШрдЯрдХ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд┐рд░рд╛рдпреЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рдмрдХреБрдЫ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд▓реНрдж рд╣реА рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рд╣рдо рдкреВрд░реЗ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреЛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЬрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ рддреЛ рдЗрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛред

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


рдЕрдм рд╣рдорд╛рд░реЗ рдирдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ!



рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдХреА рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг


рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <Rental> рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ <Rental::Image> ред



рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА <Rental::Image> рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдо рд╡рд┐рд╡рд░рдг рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪреЗрдХ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рднреА рд╣рдо <Rental::Image> рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ <Rental> рдЯреЗрд╕реНрдЯ рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред



рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдШрдЯрдХ


рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рдЖрдк рдкреГрд╖реНрда рдореЗрдВ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд┐рддреНрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЙрд╕реЗ рдмрдбрд╝рд╛ рдпрд╛ рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:



рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗ:


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

рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝рдирд╛


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


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


рдпрд╣рд╛рдБ рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ! рд╣рдо ┬лView Larger┬╗ рдФрд░ ┬лView Smaller┬╗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдШрд░ рдкрд░ рдЫрд╡рд┐ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ, рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред


рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдХреЛ рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдХрд┐рд╕ рд░рд╛рдЬреНрдп рдореЗрдВ рд╣реИред


рдПрдореНрдмрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдШрдЯрдХ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЪрд▓рд╛рдХрд░ рдЕрдкрдиреЗ <Rental::Image> рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:


 $ ember generate component-class rental/image installing component-class create app/components/rental/image.js 

рдЗрд╕ рдХрдорд╛рдВрдб рдиреЗ app/components/rentals/image.js рдореЗрдВ рд╣рдорд╛рд░реЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓ app/components/rentals/image.js ред рдЗрд╕рдореЗрдВ @glimmer/component рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред


рдЬрд╝реЛ рдмрддрд╛рддреЗ рд╣реИрдВ ...



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

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

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



рдпрд╣рд╛рдВ, рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ , рд╣рдордиреЗ this.isLarge рдЪрд░ рдХреЛ this.isLarge рдХрд┐рдпрд╛ рд╣реИред рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдпрд╣ false , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдлреЙрд▓реНрдЯ рд╕реНрдЯреЗрдЯ рд╣реИ рдЬреЛ рд╣рдо рдЕрдкрдиреЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдкреНрд░рд╡реЗрд╢ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ


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



рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдШрдЯрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рд╕рд╢рд░реНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ {{#if ...}}...{{else}}...{{/if}} рдЖрдкрдХреЛ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХрд╛ рдорд╛рди рдЗрд╕ this.isLarge )ред рдЗрди рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рд╣рдо рдХреНрд░рдорд╢рдГ рдЫрд╡рд┐ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдФрд░ рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╣рдо рдЕрдкрдиреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмрджрд▓рдХрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╣рдо app/components/rental/image.js рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП app/components/rental/image.js this.isLarge = true ред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╣рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рдЗрдореЗрдЬ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╣!



рд╣рдордиреЗ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред this.isLarge рд╡рд╛рдкрд╕ false рдмрджрд▓ this.isLarge ред


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



рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдо!


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


рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди


рдЖрдЗрдП рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдмрджрд▓рддреЗ рд╣реИрдВ:



рд╣рдордиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдХреА рд╣реИрдВ, рддреЛ рдЪрд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ @tracked рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ @tracked рдЙрджрд╛рд╣рд░рдг isLarge рдЬреЛрдбрд╝рд╛ред рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдореНрдмрд░ рдХреЛ рдЗрд╕ рдЪрд░ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдЬрдм рднреА рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░ рдХрд╛ рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдореНрдмрд░ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдмрджрд▓ рджреЗрддрд╛ рд╣реИред


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рднреА рд╣рдо рдЗрд╕ this.isLarge рдХреЛ рдПрдХ рдирдпрд╛ рдорд╛рди рдкреНрд░рджрд╛рди this.isLarge , рддреЛ this.isLarge рдПрдиреЛрдЯреЗрд╢рди, рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕реНрдерд┐рддрд┐ {{#if this.isLarge}} рдХреЛ {{#if this.isLarge}} рдХрд░рдиреЗ рдФрд░ рдХреНрд░рдорд╢рдГ рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ред


рдЬрд╝реЛ рдмрддрд╛рддреЗ рд╣реИрдВ ...



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

рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рдлрд┐рд░ рд╣рдордиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ toggleSize рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдЗрд╕ рд╕реНрд╡рд┐рдЪ рдХреЛ рдЪрд╛рд▓реВ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд this.isLarge ( false true рд╣реЛ рдЬрд╛рддреА true рдпрд╛ true false рд╣реЛ рдЬрд╛рддреА true )ред


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


рдЬрд╝реЛ рдмрддрд╛рддреЗ рд╣реИрдВ ...



рдпрджрд┐ рдЖрдк @action рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓реЗрдЧреА!

рдЕрдм рдЗрд╕реЗ рдЦрд╛рдХреЗ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ:



рд╣рдордиреЗ рджреЛ рдЪреАрдЬреЗрдВ рдмрджрд▓реА рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪреВрдБрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд╣рдордиреЗ рдпреБрдХреНрдд рдЯреИрдЧ рдХреЛ <div> рд╕реЗ <button> рд╕реНрд╡рд┐рдЪ рдХрд░ рджрд┐рдпрд╛ (рдпрд╣ рдкрд╣реБрдБрдЪ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)ред рд╕рд╣реА рд╢рдмреНрджрд╛рд░реНрде рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо "рдлрд╝реНрд░реА" рдлрд╝реЛрдХрд╕ рдФрд░ рдХреАрдмреЛрд░реНрдб рдЗрдВрдЯрд░реИрдХреНрд╢рди рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред


рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рдЗрд╕ рдмрдЯрди рдХреЛ рдЕрдЯреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {{on}} рд╕рдВрд╢реЛрдзрдХ рдХрд╛ this.toggleSize рдХрд┐рдпрд╛ред рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВред


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдШрдЯрдХ рдмрдирд╛рдпрд╛ред рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдкрд░реАрдХреНрд╖рдг


рдЕрдВрдд рдореЗрдВ, рдЖрдЗрдП рдЗрд╕ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦреЗрдВ:




рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо


рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВред рд╣рдордиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЬреЛрдбрд╝реЗ рдЬрдм рд╣рдордиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдореНрдорд┐рд▓рд┐рдд рдХреАрдВред рдпрджрд┐ рд╣рдо рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВ, рддреЛ рдЗрди рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬреЗрдВ рд╣реИрдВ:
1) <button> рдореЗрдВ "large" рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ред
2) рдкрд╛рда ┬л┬╗ рдФрд░ ┬л┬╗ ред


рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдореЗрдВ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВред рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп {{if}} рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг {{if}} рджреЛ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рддрд░реНрдХ рд╢рд░реНрдд рд╣реИ ред рджреВрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рд╕рддреНрдп рд╣реИ рддреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, {{if}} рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╢рд░реНрдд рдХреЗ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдмрдЯрди рд▓реЗрдмрд▓ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:



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


рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рд╛, рдФрд░ рд╣рдо рдЕрдЧрд▓реА рдЪреБрдиреМрддреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗ!



рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ


рдШрдЯрдХ рдореЗрдВ рд╢реЗрд╖ рдЕрдирд╛рд░рдХреНрд╖рд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рдШрд░ рдХрд╛ рд╕реНрдерд╛рди рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдирдХреНрд╢рд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ:


рдирдХреНрд╢рд╛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗ:


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

рдЖрд╡реЗрджрди рд╕реНрддрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди


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


рдореИрдкрдмреЙрдХреНрд╕ рдПрдХ рд╕реНрдерд┐рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдЫрд╡рд┐ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреАрдПрдирдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдЪрд┐рддреНрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд URL рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ <img> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдХреНрд▓рд╛рд╕!


рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдкрдмреЙрдХреНрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдирд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЯреЛрдХрди рд▓реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЯреЛрдХрди) рдФрд░ рдЗрд╕реЗ config/environment.js рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:




рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, config/environment.js рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдЗрди рдЬреИрд╕реЗ API рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рд╡реЗрд╢ (рдЬреЛ рд╡рд┐рдХрд╛рд╕, рдкрд░реАрдХреНрд╖рдг (рдкрд░реАрдХреНрд╖рдг) рдпрд╛ рдЙрддреНрдкрд╛рджрди (рдЙрддреНрдкрд╛рджрди)) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдирдХреЗ рднрд┐рдиреНрди рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


рдЬрд╝реЛ рдмрддрд╛рддреЗ рд╣реИрдВ ...



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

рд╣рдорд╛рд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрди рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, config/environment.js рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред


рдЖрдк рдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдвреВрдВрдврдХрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ ember server рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдлрд┐рд░ "Ctrl" рдХреБрдВрдЬреА рджрдмрд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдХреАрдмреЛрд░реНрдб рдкрд░ "C" рдХреБрдВрдЬреА рджрдмрд╛рдХрд░ Ctrl + C рджрдмрд╛рдПрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕реА ember server рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 $ ember server building... Build successful (13286ms) тАУ Serving on http://localhost:4200/ 

рдПрдХ рдШрдЯрдХ рд╡рд░реНрдЧ рдпреБрдХреНрдд рдПрдХ рдШрдЯрдХ рдмрдирд╛рдирд╛


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


 $ ember generate component map --with-component-class installing component create app/components/map.js create app/components/map.hbs installing component-test create tests/integration/components/map-test.js 

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


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ <Map> рдШрдЯрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЕрднреА рддрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ! рдЗрд╕рд▓рд┐рдП, рд╣рдо --with-component-class рдХреЗ рд╕рд╛рде --with-component-class рдзреНрд╡рдЬ --with-component-class рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реЛ рдЬреЛ рд╣рдореЗрдВ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЪрд╛рд╣рд┐рдПред


рдЬрд╝реЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ ...



рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛? ember g component map -gc рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред -gc рдзреНрд╡рдЬ рдЧреНрд▓рд┐рдорд░ рдШрдЯрдХ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ ( g limmer c omponent), рдФрд░ рд╡рд░реНрдЧ рдХреЛ рдЙрддреНрдкрдиреНрди рднреА рдХрд░рддрд╛ рд╣реИ ( g cerate c lass)

рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШрдЯрдХреЛрдВ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░


рдЖрдЗрдП рд╣рдорд╛рд░реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:



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


рдкреИрдЯрд░реНрди рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдк


рдЕрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдЬрд╛рдПрдБ:



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


рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Mapbox рд╕реЗ рд╕реНрдерд┐рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдЫрд╡рд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <img> ред


рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХрдИ рдорд╛рди рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ - @lat , @lng , @zoom , @width рдФрд░ @height ред рдпреЗ <Map> рдШрдЯрдХ рдХреЗ рддрд░реНрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред


рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдПрдХ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХ рдмрдирд╛рдпрд╛ рдЬрд┐рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рджреЗрдЦрд╛ рдерд╛ рдЬрдм <LinkTo> рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛; рд╣рдореЗрдВ @route рддрд░реНрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА @route рдпрд╣ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдХрд┐рд╕ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдирд╛ рд╣реИред


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


HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ ...attributes


рддрдм рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ...attributes рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП ...attributes <img> рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреИрд╕реЗ рдХрд┐ class , рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпрд╛ рдорд╛рдирд╡ рдЕрдиреБрдХреВрд▓ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ alt рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред


рдЖрджреЗрд╢ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ! рдПрдореНрдмрд░ рдЙрдирдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ alt рд╡реИрд▓реНрдпреВ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ (рдЖрд╡реЗрджрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ...attributes ), рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ alt рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред


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


src рд╡рд┐рд╢реЗрд╖рддрд╛ рдореИрдкрдмреЙрдХреНрд╕ рд╕реНрдерд┐рд░ рдЫрд╡рд┐ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП URL рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ this.token , рдЬрд┐рд╕рдореЗрдВ URL- рд╕реБрд░рдХреНрд╖рд┐рдд рдЯреЛрдХрди this.token ред


рдЕрдВрдд рдореЗрдВ, рдЪреВрдВрдХрд┐ рд╣рдо @2x "рд░реЗрдЯрд┐рдирд╛" рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдореЗрдВ width рдФрд░ height рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, <img> рдЬрд┐рддрдирд╛ рд╣рдордиреЗ рдЙрдореНрдореАрдж рдХреА рдереА рдЙрд╕рд╕реЗ рджреЛрдЧреБрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛!


рд╣рдордиреЗ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдЬреЛрдбрд╝реЗ рд╣реИрдВ, рддреЛ рдЪрд▓реЛ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ! рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдУрд╡рд░рд░рд╛рдЗрдб HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдереАред





рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ qunit-dom рд╕реЗ hasAttribute рд╣реЗрд▓реНрдкрд░ hasAttribute рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред , , src https://api.mapbox.com/ ( , ). , , .


тАж .



, ! , ? , <Map> <Rental> :



!



...



, , config/environment.js MAPBOX_ACCESS_TOKEN . ! , Ember-.

<Rental> , <Map> .



- (auto-track)


<Map> src <img> , . тАФ JavaScript .


JavaScript API this.args.* . , URL .


...



this.args тАФ API, Glimmer. (, ┬л┬╗ ) (legacy) , API JavaScript .



! !



, @tracked . , , Ember .


, , , . , src lat , lng , width , height zoom this.args . , , , {{this.src}} .


Ember , . @tracked , Ember , (invalidate) , ┬л┬╗ . (auto-track). , this.args ( , this.args.* ), @tracked Glimmer. , (Just works).


JavaScript


, :





API this.setProperties , .


, . ( !).


this , render . ┬л┬╗ . .


!




<Rental> . , :



:


  • (model hook)
  • (mocking) JSON
  • (remote)
  • {{#each}}


<Rental> . , , , , . .


, , . , .


, Ember тАФ . , , .


. app/routes/index.js :



, , . Route . , .


Route IndexRoute, , .



. ? model() . .


, . Ember , . , , ( ).


, . , async . await . ( : , Promise Javascript )


. , , JavaScript ( POJO (Plain Old Javascript Object)).


, , , . @model . POJO, .


, , title :



, .



рдЕрджреНрднреБрдд!


, , , , , ! <Rental> , .


.


-, <Rental> @rental . <h1> , , :



@model <Rental> @rental , ┬лGrand Old Mansion┬╗ <Rental> ! , @rental .




, ┬лGrand Old Mansion┬╗, , .



, : , .


, , , , .


<Rental> . , setProperties , .



, <Rental> render @rental . , !



(mocking) JSON


, , , , , !


, , , API. , API . JSON . , JSON HTTP- тАФ , API, тАФ - . рдХреВрд▓!


? , JSON .zip. public .


, public :


 public тФЬтФАтФА api тФВ тФЬтФАтФА rentals тФВ тФВ тФЬтФАтФА downtown-charm.json тФВ тФВ тФЬтФАтФА grand-old-mansion.json тФВ тФВ тФФтФАтФА urban-living.json тФВ тФФтФАтФА rentals.json тФЬтФАтФА assets тФВ тФФтФАтФА images тФВ тФФтФАтФА teaching-tomster.png тФФтФАтФА robots.txt 4 directories, 6 files 

, , URL http://localhost:4200/api/rentals.json .



┬л┬╗ JSON. !


(remote)


. , .



?


, Fetch API JSON API /api/rentals.json , URL, .


, . Fetch API , fetch async , . , await .


Fetch API . , ; , JSON, json() . , await .



, , .




JSON:API , , .


-, JSON:API , "data" , . ; , , , тАФ , .


, , . type id , (!). , , attributes .


, , , , : , , type , - . type "Standalone" "Community", , <Rental> .


JSON:API. .


:



(parsing) JSON attributes , type , . , , - .


! .


(helper) {{#each}}


, , тАФ index.hbs , <Rental> . @rental @model . , @model тАФ ()! , , .


.



{{#each}}...{{/each}} , . тАФ тАФ . тАФ <Rental> , <li> .


{{rental}} . rental ? , ! as |rental| each . - , as |property| , {{property}} .


, .



рд╣реБрд░реНрд░реЗ! , . fetch . , ?


, !



( 1.1 1.2)


Ember!


Ember, .


#Emberjs. Discord , ember_js


рдЬрдм рдЖрдк рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВрдЧреЗ, рддреЛ рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдХреНрдпрд╛ рд╕реАрдЦрд╛, рдФрд░ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ!


рдЕрджреНрдпрддрди: рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ MK1301 рдХреЛ рдзреНрд╡рд╕реНрдд рдХрд░рдирд╛ред

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


All Articles