рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ MVC рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛

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

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

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

рдкрд░рд┐рдЪрдп


рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИJJS рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ

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

рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рдПрдорд╡реАрд╕реА?

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

рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MVC рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 2 рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ:


рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:



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

HTML рдФрд░ CSS

рдпрд╣ HTML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд╛рда рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд░реЗрдВрдЧреЗ:

<!doctype html> <html> <head> <meta charset="utf-8"> <title>A simple MVC structure</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="container"> <h1>My users</h1> <nav><a href="#list">List</a> - <a href="#add">Add</a></nav> <div id="app"></div> </div> <script data-main="js/main" src="js/require.js"></script> </body> </html> 


рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдиреЗрд╡реА рдореЗрдиреВ рдХреЗ рд▓рд┐рдВрдХ рд╣реЛрдВрдЧреЗ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдореМрдЬреВрдж рд╣реЛрдВрдЧреЗ, рдФрд░ MVC рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕рд╛рд░рд╛ рдЬрд╛рджреВ <div id = "app"> </ div> рддрддреНрд╡ рдореЗрдВ рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рд╢рд░реАрд░ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ (рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ) рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛-рдореБрдЦреНрдп = "рдЬреЗрдПрд╕ / рдореБрдЦреНрдп" ред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди, рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВрдЬреЗрдИрдЬреЗрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 #container{ font-family:Calibri, Helvetica, serif; color:#444; width:200px; margin:100px auto 0; padding:30px; border:1px solid #ddd; background:#f6f6f6; -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; } h1, nav{ text-align:center; margin:0 0 20px; } 


OOP рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ: рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рд╣реИ?

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

 var MyMath = (function(){ //       return { //     add:function(a, b){ return a + b; } }; })(); console.log(MyMath.add(1, 2)); 


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

 var MyMath = (function(){ //         : function add(a, b){ return a + b; } return { add:add //        ! }; })(); console.log(MyMath.add(1, 2)); 


рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдУрдкрдирд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

RequireJS


рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг

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

 define(function(){ function add(a, b){ return a + b; } return { add:add }; }); 


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

рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ

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

 require(['MyMath'], function(MyMath){ console.log(MyMath.add(1, 2)); }); 


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


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

MVC рд╕рдВрд░рдЪрдирд╛


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

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



рддреЛ рд╕рдВрд░рдЪрдирд╛ рддреИрдпрд╛рд░ рд╣реИред рдЖрдЗрдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рднрд╛рдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ: рдпрд╣ рдПрдХ рдореЙрдбрд▓ рд╣реИред

рдореЙрдбрд▓: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ .js


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

 define(function(){ function User(name){ this.name = name || 'Default name'; } return User; }); 


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

 require(['Models/User'], function(User){ var users = [new User('Barney'), new User('Cartman'), new User('Sheldon')]; for (var i = 0, len = users.length; i < len; i++){ console.log(users[i].name); } localStorage.users = JSON.stringify(users); }); 


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



рдиреЛрдЯ : JSON рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП deserialize рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрджрд╛рд╣рд░рдг IE7 рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░реЗред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк Github рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдХреЗ json2.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

рдпрд╣ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо ListController.js рдФрд░ ListView.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпреЗ рджреЛ рдШрдЯрдХ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд░рд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ: рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдореЗрдВ рдПрдХ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рд╣реЛрдЧреА рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рд╕реНрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рд╕реЗ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдореЗрдВ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ ListController рдореЗрдВ рдЖрдкрдХреЛ ListView рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

 define(['Views/ListView'], function(ListView){ function start(){ var users = JSON.parse(localStorage.users); ListView.render({users:users}); } return { start:start }; }); 


рдпрд╣рд╛рдВ рд╣рдо рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рд╣рдо рд╕рдм рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ListView.js рдореЗрдВ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

 define(function(){ function render(parameters){ var appDiv = document.getElementById('app'); var users = parameters.users; var html = '<ul>'; for (var i = 0, len = users.length; i < len; i++){ html += '<li>' + users[i].name + '</li>'; } html += '</ul>'; appDiv.innerHTML = html; } return { render:render }; }); 


рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рддреА рд╣реИ рдФрд░ HTML рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рддрддреНрд╡ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

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

рдЕрдм, рд╣рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ ListController рдореЙрдбреНрдпреВрд▓ рдХреЛ "рд░рди" рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрд╕реЗ рд╣рдорд╛рд░реА main.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рдФрд░ ListController.start () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:

 require(['Models/User', 'Controllers/ListController'], function(User, ListController){ var users = [new User('Barney'), new User('Cartman'), new User('Sheldon')]; localStorage.users = JSON.stringify(users); ListController.start(); }); 


рдЕрдм рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЗрд╕ рдЕрджреНрднреБрдд рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреЛ рд░реАрдлрд╝реНрд░реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рд╣рд╛рдБ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдмрдзрд╛рдИ рд╣реЛ, рдпрджрд┐ рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ рд╣реИ!

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

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ

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

 define(['Views/AddView'], function(AddView){ function start(){ AddView.render(); } return { start:start }; }); 


рдФрд░ рдЗрд╕реА рджреГрд╢реНрдп:

 define(function(){ function render(parameters){ var appDiv = document.getElementById('app'); appDiv.innerHTML = '<input id="user-name" /><button id="add">Add this user</button>'; } return { render:render }; }); 


рдЕрдм рдЖрдк AddController рдХреЛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рджреГрд╢реНрдп рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



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

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

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЪрд▓реЛ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдШрдЯрдирд╛ рдХреЗ рд╕рднреА рддрд░реНрдХ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╣рдореЗрдВ AddController рдореЗрдВ bindEvents рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рджреГрд╢реНрдп HTML рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 define(['Views/AddView', 'Models/User'], function(AddView, User){ function start(){ AddView.render(); bindEvents(); } function bindEvents(){ document.getElementById('add').addEventListener('click', function(){ var users = JSON.parse(localStorage.users); var userName = document.getElementById('user-name').value; users.push(new User(userName)); localStorage.users = JSON.stringify(users); require(['Controllers/ListController'], function(ListController){ ListController.start(); }); }, false); } return { start:start }; }); 


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



рдЕрджреНрднреБрдд! рдЖрдкрдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЖрдкрдиреЗ рдореЗрд░реЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рддреЛ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛


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


рдЗрд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЛ рдмреБрдХрдорд╛рд░реНрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдиреЛрдЯ : рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо рдФрд░ рдУрдкреЗрд░рд╛ рдХреЛ HTML5 рдЗрддрд┐рд╣рд╛рд╕ рдкреНрд░рдмрдВрдзрди (PushState, popState, ReplaceState) рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╕рдорд░реНрдерди рд╣реИ, рдЬреЛ рд╣реИрд╢ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛

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


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

рдиреЛрдЯ : рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jQuery рдкреНрд▓рдЧрдЗрди рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред

рдорд╛рд░реНрдЧреЛрдВ рдФрд░ рдореБрдЦреНрдп рдорд╛рд░реНрдЧ рдЪрдХреНрд░

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

 define(function(){ var routes = [{hash:'#list', controller:'ListController'}, {hash:'#add', controller:'AddController'}]; var defaultRoute = '#list'; var currentHash = ''; function startRouting(){ window.location.hash = window.location.hash || defaultRoute; setInterval(hashCheck, 100); } return { startRouting:startRouting }; }); 


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

рд╣реИрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

рдпрд╣ рдПрдХ рд╣реИрд╢рдЪреЗрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рд░ 100 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

 function hashCheck(){ if (window.location.hash != currentHash){ for (var i = 0, currentRoute; currentRoute = routes[i++];){ if (window.location.hash == currentRoute.hash) loadController(currentRoute.controller); } currentHash = window.location.hash; } } 


hashCheck рдмрд╕ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реИрд╢ currentHash рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рд▓реЛрдбрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╣рддрд╛ рд╣реИред

рд╡рд╛рдВрдЫрд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рдЕрдВрдд рдореЗрдВ, рд▓реЛрдбрдХрдВрдЯреНрд░реЛрд▓рд░ рдмрд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯ рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ:

 function loadController(controllerName){ require(['Controllers/' + controllerName], function(controller){ controller.start(); }); } 


рддреЛ, Router.js рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

 define(function(){ var routes = [{hash:'#list', controller:'ListController'}, {hash:'#add', controller:'AddController'}]; var defaultRoute = '#list'; var currentHash = ''; function startRouting(){ window.location.hash = window.location.hash || defaultRoute; setInterval(hashCheck, 100); } function hashCheck(){ if (window.location.hash != currentHash){ for (var i = 0, currentRoute; currentRoute = routes[i++];){ if (window.location.hash == currentRoute.hash) loadController(currentRoute.controller); } currentHash = window.location.hash; } } function loadController(controllerName){ require(['Controllers/' + controllerName], function(controller){ controller.start(); }); } return { startRouting:startRouting }; }); 


рдирдИ рд░реВрдЯрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

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

 require(['Models/User', 'Router'], function(User, Router){ var users = [new User('Barney'), new User('Cartman'), new User('Sheldon')]; localStorage.users = JSON.stringify(users); Router.startRouting(); }); 


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

 require(['Controllers/ListController'], function(ListController){ ListController.start(); }); 


рдЖрдЗрдП рдЗрди рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрд╢ рдЕрдкрдбреЗрдЯ рд╕реЗ рдмрджрд▓реЗрдВ:

 window.location.hash = '#list'; 


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

рдпрд╣рд╛рдБ рдЗрд╕ рдЖрд╡реЗрджрди рдХреЗ рдСрдирд▓рд╛рдЗрди рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реИред

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


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



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



рдореВрд▓ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ ред

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


All Articles