рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪреБрдирдиреЗ рдХреЗ рдирд┐рдпрдо

рдЯреАрдПрд▓, рдбреЙ

  • рдпрд╣ рд▓реЗрдЦ TOP-3 рд╕реВрдЪреА рд╕реЗ JS рдЪреМрдЦрдЯреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  • рдЬрдм рдПрдХ рдЧреИрд░-рдЯреЙрдк -3 рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрдореНрдореАрдж рд╕реЗ рдЕрдзрд┐рдХ рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рдХреЗ рдкрд░рд┐рдорд╛рдг рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
  • рдХрд╣рд╛рдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдХрд╣рд╛рдиреА рдПрдХ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдИ, рдЬрд┐рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдФрд░ рдореИрд░рд┐рдпрдиреЗрдЯ.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдХрд▓-рдкреГрд╖реНрда рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕ рд╕рдордп рд╡реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рдереЗред рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рд╕рд░рд▓ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛: 1) рдореЙрдбрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓, 2) рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓, 3) рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓, 4) рдПрдХ рджреГрд╢реНрдп рд╕рдВрдЧреНрд░рд╣ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓, 4) рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯред 5) рдЯреЗрдмрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ; 6) рдирд┐рдпрдВрддреНрд░рдХ рдореЙрдбреНрдпреВрд▓ред рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд▓рдЧрднрдЧ 10 рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реЛрдирд╛ - рдмрд╣реБрдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрдЪрд╛рд╕ рд╕реЗ рдЕрдзрд┐рдХ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдереЗред рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рд╢реБрд░реБрдЖрдд рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдЖрд╡реЗрджрди рдХреЗ рдЫрд╣ рдорд╣реАрдиреЗ рдмрд╛рдж, рдпрд╣ рдЕрднреА рднреА рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ prerender.io рдХреЛ рдЬреЛрдбрд╝рдирд╛ (рдЬреЛ рддрдм phantom.js рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛) рдиреЗ рдорджрдж рдХреА, рд▓реЗрдХрд┐рди рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВред рдмрд╛рджрд▓реЛрдВ рдиреЗ рдЖрд╡реЗрджрди рдФрд░ рдореЗрд░реЗ рдКрдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдЖрдЬ рдмрд╣реБрдд рдЬрд▓реНрджреА рдФрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╡рд╣ рдерд╛: рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред Backbone.js рдФрд░ marionettejs рдХреЗ рд╕рд╛рде, рдпрд╣ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдкрд░ рд░реЗрдВрдбрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕реЗ рд╕реНрдкрд╛рдЗрдХ рдмреАрд░реЗрдо (рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ / рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓реЗрдЦрдХ) рдХреЗ рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдиреЗ 2015 рдореЗрдВ 58 рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдФрд░ 4,184 рд▓рд╛рдЗрдХреНрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ githin.com рдкрд░ рд░реЛрдХрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рджрд┐рди рдХреЗ рдмреНрд▓рд┐рдЯреНрдЬ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рдерд╛ред ред рдореИрдВрдиреЗ рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреАред рдореИрдВрдиреЗ рдЯреЙрдк -3 рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рддреБрд░рдВрдд рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреЗ рд╣реБрдП рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рджрдВрдЧрд╛.рдЬреЗрдПрд╕ github.com/riot/riot рдорд┐рд▓рд╛ , рдЬрд┐рд╕рдХреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ github.com рдкрд░ 13,704 рд▓рд╛рдЗрдХреНрд╕ рд╣реИрдВ, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд╣рд▓реЗ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рд╕реНрдерд┐рддрд┐ (рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖ)ред

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

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

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

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

рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдереАред рджрдВрдЧрд╛ рдореЗрдВ рдЪреЛрдЯ рдорд╛рд░рдирд╛ред Js рдмреЙрдХреНрд╕ рд╕реЗ рд▓рдЧрднрдЧ рдмрд╛рд╣рд░ рдЖрддрд╛ рд╣реИ github.com/riot/route - рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╣реА рдбреЗрд╡рд▓рдкрд░ рд╕реЗред рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдореБрдХреНрдд рдСрдкрд░реЗрд╢рди рдХреА рдЙрдореНрдореАрдж рдереАред рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреБрдЫ рдкреГрд╖реНрда рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИрдВред рдпрд╣реА рд╣реИ, рдПрдХ рдмрд╛рд░ рдПрдХ рдирдП рдорд╛рд░реНрдЧ рдкрд░ рд╕рдВрдХреНрд░рдордг рдПрдХрд▓-рдкреГрд╖реНрда рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЛрдб рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░ рдЙрд╕реА рд╕рдВрдХреНрд░рдордг рдиреЗ рд╕рдВрдкреВрд░реНрдг HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░ рджрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдЦреЛ рдЧрдИ рдереА рдЕрдЧрд░ рдЗрд╕реЗ рдЕрднреА рддрдХ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред (рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 4.0)

рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдШрдЯрдХ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рд╡рд╣ рдиреНрдпреВрдирддрдо рдкреНрд░рд╡рд╛рд╣ рдЬреИрд╕рд╛ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрдХ github.com/jimsparkman/RiotControl рдерд╛ ред рд╕рдЪ рд╣реИ, рдЗрд╕ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдирд┐рдпреБрдХреНрдд рдХрд░рдирд╛ рдФрд░ рд░рджреНрдж рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬрд┐рддрдирд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдерд╛: рджрдВрдЧрд╛.рдЬреЗрдПрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ, рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ, рдЬрд┐рдиреНрд╣реЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ (рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛) рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдПрдХ рдЖрд╡реЗрджрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЙрдк -3 рд╕реВрдЪреА рд╕реЗ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рддреИрдпрд╛рд░реА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реНрдореГрддрд┐ рдореЗрдВ рджрдВрдЧрд╛.рдЬрдЬ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рдХреБрдЫ рдкреЗрдЬреЛрдВ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рджрдВрдЧрд╛.рдЬрд╕ 4.0 рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ (рдЦрд░реЛрдВрдЪ рд╕реЗ) рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рджрдВрдЧрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред js on medium.com: medium.com/@gianluca.guarini/every-revolution-begins-with-a-riot-js-first-6c6a4b090ee рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рднреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛ рдореБрдЭреЗ рдЪрд┐рдВрддрд┐рдд рдХрд░рддреА рдереАрдВ, рдФрд░ рдЬрд┐рдирд╕реЗ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, riot.js рд╕рдВрд╕реНрдХрд░рдг 4.0 рдореЗрдВ:

  • рдХрдВрдкрд╛рдЗрд▓рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЬрди рдкрд╣рд▓реЗ рдирд┐рдпрдорд┐рдд рднрд╛рд╡реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛) - рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА
  • рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рдореЗрдВ рдбрдмрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╡рд╣реАрдВ) рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
  • рд╣реЙрдЯ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд▓рдЧрдЗрди github.com/riot/hot-reload
  • рдФрд░ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рд╡рд░реНрддрди

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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рджрдВрдЧрд╛.рдЬреЙрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХрд╛ рдЕрднреА рддрдХ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдареАрдХ рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА github.com/riot/ssr рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ рддреАрди рд╕рд╣-рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдФрд░ github.com рдкрд░ рддреАрди рд▓рд╛рдЗрдХреНрд╕ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ (рд╕рднреА рдкрд╕рдВрдж рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ)ред

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

рддреЛ рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, github.com/gothinkster/realworld рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Habr├й рдкрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдЙрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдпрд╛ рдЙрдирдХреЗ рдмрд┐рдирд╛) рдХреА рдорджрдж рд╕реЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдмреНрд▓реЙрдЧ рдЗрдВрдЬрди рдХрд╛ рд╡рд┐рдХрд╛рд╕, рдордзреНрдпрдо.рдХреЙрдо рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рджреИрдирд┐рдХ рдЖрдзрд╛рд░ рдФрд░ todo.app рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдореНрдорд╛рдирд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреА рдкреБрд╖реНрдЯрд┐ рдореЗрдВ, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд░рд┐рдЪ рд╣реИрд░рд┐рд╕ (sveltejs рдХреЗ рдкреНрд░рдореБрдЦ рдбреЗрд╡рд▓рдкрд░) github.com/sveltejs/realworld рд╕реЗ рднреА рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг


рдмреЗрд╢рдХ рдЖрдк рд▓рдбрд╝рд╛рдИ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рд╕рд╡рд╛рд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рд╕рд╣рдпреЛрдЧреА рдХрд┐рд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдЯрдо рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рджрдВрдЧрд╛-рдЯреИрдЧ рдкреНрд▓рдЧрдЗрди github.com/riot/syntax-highlight/tree/legacy рд╣реИ , рдЬреЛ рдкрд┐рдЫрд▓реЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЙрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрджрд╛рддреНрдд github.com/riot/syntax-highlight рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ - рдпрд╣ рдЪрд╛рд▓реВ рд╣реИ рдФрд░ riot.js 4.0 рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, riot.js рдШрдЯрдХ рдПрдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдорд╛рдиреНрдп рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ JS рдХреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрддреНрд╡ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИред рддреЛ рд╕рдм рдХреБрдЫ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк * .ri рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рдордЬрдмреВрд░ рдирд┐рд░реНрдгрдп рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдЖрдЧреЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЕрд╕рдВрднрд╡ рд╣реЛрддрд╛ред

рд╣рдореЗрдВ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдЕрдм рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдПрд╕реНрд▓рд┐рдВрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдШрдЯрдХреЛрдВ рдХрд╛ JS рдХреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрддреНрд╡ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИ, рдореИрдВ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ JS рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдвреВрдВрдврдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ - github.com/BenoitZugmeyer/eslint.plugin-html ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдЕрдиреБрдЧрд╛рдореА рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд▓рдЧрд╛:

{ "parser": "babel-eslint", "plugins": [ "html" ], "settings": { "html/html-extensions": [".html", ".riot"] }, "env": { "browser": true, "node": true, "es6": true }, "extends": "standard", "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parserOptions": { "ecmaVersion": 2018, "sourceType": "module" }, "rules": { } } 

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

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

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА


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

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

1. рдПрдХ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдФрд░ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐
рдбреЗрд╡рд▓рдкрд░ рдореЛрдб рдореЗрдВ:
2. рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╕рдВрджреЗрд╢ (рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛, рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг)
3. рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╕рдВрджреЗрд╢ (рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рдирдВрдмрд░, рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг)
4. рд╕рдВрд╢реЛрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХрд╛ рддреНрд╡рд░рд┐рдд рдЖрд╢реНрд╡рд╛рд╕рди
5. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХрд╛ рдЧрд░реНрдо рдЕрдзрд┐рднрд╛рд░
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ:
6. рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 4a8ee185040ac59496a2.main.js)
7. рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд▓реЗрдЖрдЙрдЯ (рд╣рд┐рд╕реНрд╕рд╛)
8. рдХреЛрдб рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЦрдВрдбреВ рдореЗрдВ рдЯреВрдЯ рд░рд╣рд╛ рд╣реИ

Riot.js рд╕рдВрд╕реНрдХрд░рдг 4.0 рдореЗрдВ, github.com/riot/webpack-loader рдореЙрдбреНрдпреВрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдП рдЧрдП рдЪреЗрдХрд▓рд┐рд╕реНрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рддрд╣рдд рдореИрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЬреЗрдПрд╕: рд╡реЗрдмрдкреИрдХ-рджреЗрд╡-рдорд┐рдбрд▓рд╡реЗрдпрд░ рдФрд░ рд╡реЗрдмрдкреИрдХ-рд╣реЙрдЯ-рдорд┐рдбрд▓рд╡реЗрдпрд░, рдЬреЛ рдЖрдкрдХреЛ рдЯрд╛рдЗрдкрд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рдордп рд╕реЗ рддреБрд░рдВрдд рдПрдХ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ / рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд╣реЙрдЯ рдУрд╡рд░рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИред рдЙрд╕реА рд╕рдордп, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдШрдЯрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рд╕рд╣реА рд╕рдордп рдкрд░, рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХреИрд╢ рдХрд┐рдП рдЧрдП рд╕рднреА рдХреЛрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛: github.com/apapacy/realworld-riotjs-effector-universal-hot/blob/master/src/dev/server.js

рдорд╛рд░реНрдЧ


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

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

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

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

... рдПрд╕рдкреАрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

  • рдиреЗрд╕реНрдЯреЗрдб рдорд╛рд░реНрдЧ / рджреГрд╢реНрдп
  • рдореЙрдбреНрдпреВрд▓рд░ рд░рд╛рдЙрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
  • рдорд╛рд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░, рдХреНрд╡реЗрд░реА, рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рддрдХ рдкрд╣реБрдВрдЪ
  • Vue.js рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдХреНрд░рдордг рдПрдиреАрдореЗрд╢рди рджреЗрдЦреЗрдВ
  • рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдирд┐рдпрдВрддреНрд░рдг
  • рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ рдХрд╛ рд╕реНрд╡рдд: рдкреНрд░рддреНрдпрдп
  • IE9 рдореЗрдВ рдСрдЯреЛ-рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде HTML5 рдЗрддрд┐рд╣рд╛рд╕ рдореЛрдб рдпрд╛ рд╣реИрд╢
  • рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░реЙрд▓ рд╡реНрдпрд╡рд╣рд╛рд░

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

  1. рдпреВрдирд┐рд╡рд░реНрд╕рд▓ / рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рджреЛрдиреЛрдВ рдкрд░ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП;
  2. рдХрд┐рд╕реА рднреА (рдореЗрд░реЗ рдЪреБрдиреЗ рд╣реБрдП) рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдпрд╛ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рдореБрдЭреЗ рдРрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд┐рд▓реА, рдпрд╣ github.com/kriasoft/universal-router рд╣реИ ред рдпрджрд┐ рд╣рдо рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ URLs рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП URL рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛: рдХреНрдпрд╛ рдпрд╣ рд╕рдм рд╣реИ? рдФрд░ рдлрд┐рд░ рд╕рднреА рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдФрд░ рддрдм рдореБрдЭреЗ рдордзреНрдпрдо.рдХреЙрдо рдордзреНрдпрдо. com/@ippei.tanaka/universal-router-history-react-97ec79464573 рдкрд░ рдПрдХ рд▓реЗрдЦ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╢рд╛рдпрдж рдкреБрд░реНрдирд▓реЗрдЦрди () рдЗрддрд┐рд╣рд╛рд╕ рд╡рд┐рдзрд┐, рдЬреЛ рдореБрдЭреЗ рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЛрдб рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд░рд╛рдЙрдЯрд░ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 const routes = new UniversalRouter([ { path: '/sign-in', action: () => ({ page: 'login', data: { action: 'sign-in' } }) }, { path: '/sign-up', action: () => ({ page: 'login', data: { action: 'sign-up' } }) }, { path: '/', action: (req) => ({ page: 'home', data: { req, action: 'home' } }) }, { path: '/page/:page', action: (req) => ({ page: 'home', data: { req, action: 'home' } }) }, { path: '/feed', action: (req) => ({ page: 'home', data: { req, action: 'feed' } }) }, { path: '/feed/page/:page', action: (req) => ({ page: 'home', data: { req, action: 'feed' } }) }, ... { path: '(.*)', action: () => ({ page: 'notFound', data: { action: 'not-found' } }) } ]) const root = getRootComponent() const history = createBrowserHistory() const render = async (location) => { const route = await router.resolve(location) const component = await import(`./riot/pages/${route.page}.riot`) riot.register(route.page, component.default || component) root.update(route, root) } history.listen(render) 

рдЕрдм history.push () рдкрд░ рдХреЛрдИ рднреА рдХреЙрд▓ рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдорд╛рдирдХ HTML рддрддреНрд╡ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ (рдПрдВрдХрд░), рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рдирд╛:

 <navigation-link href={ props.href } onclick={ action }> <slot/> <script> import history from '../history' export default { action (e) { e.preventDefault() history.push(this.props.href) if (this.props.onclick) { this.props.onclick.call(this, e) } e.stopPropagation() } } </script> </navigation-link> 

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


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ mobx рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рдерд╛ - рдЕрдзреНрдпрдпрди рдЬреЛ рдореИрдВрдиреЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ github.com/zerobias/effector рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдпрд╣ 100% рд░рд┐рдбрдХреНрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рдХреЗрд╡рд▓ рдмрдбрд╝реЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдмрд┐рдирд╛) рдФрд░ 100% mobx рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдореЛрдмреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ рдЕрднреА рднреА рдХрдо рд╣реИ)

рд╕реНрдЯреЛрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 import { createStore, createEvent } from 'effector' import { request } from '../agent' import { parseError } from '../utils' export default class ProfileStore { get store () { return this.profileStore.getState() } constructor () { this.success = createEvent() this.error = createEvent() this.updateError = createEvent() this.init = createEvent() this.profileStore = createStore(null) .on(this.init, (state, store) => ({ ...store })) .on(this.success, (state, data) => ({ data })) .on(this.error, (state, error) => ({ error })) .on(this.updateError, (state, error) => ({ ...state, error })) } getProfile ({ req, author }) { return request(req, { method: 'get', url: `/profiles/${decodeURIComponent(author)}` }).then( response => this.success(response.data.profile), error => this.error(parseError(error)) ) } follow ({ author, method }) { return request(undefined, { method, url: `/profiles/${author}/follow` }).then( response => this.success(response.data.profile), error => this.error(parseError(error)) ) } } 

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

рдкрд░реАрдХреНрд╖рдг


рдпрд╣ рдХрд░реЗрдВ

рдирд┐рд╖реНрдХрд░реНрд╖


рддреЛ, рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА github.com/apapacy/realworld-riotjs-effector-universal-hot рдореЗрдВ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдкрд░ Habr├й рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдм realworld-riot-effector-universal-hot-pnujtmugam.now.sh рдкрд░ рдбреЗрдореЛ рд╕рд╛рдЗрдЯ

рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдкрдиреЗ рдЫрд╛рдкреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред Riot.js рд╕рдВрд╕реНрдХрд░рдг 4.0 рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдХрдИ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдмрд╛рдж рдХреЗ рдШрдВрдЯреЛрдВ рдФрд░ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдХрдЯреНрдЯрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдареАрдХ рджреЛ рд╕рдкреНрддрд╛рд╣ рд▓рдЧреЗред рд▓реЗрдХрд┐рди ... рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди ... рдЪрдорддреНрдХрд╛рд░ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд╣реБрдЖред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ 20-30 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рдирд┐рдЧрдо рдлрд┐рд░ рд╕реЗ рдЬреАрддреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдЯрд┐рдВрдЧ рдФрд░ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

apapacy@gmail.com
17 рдЬреВрди 2019

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


All Articles