рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдкрд╣рд▓реЗ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдПрдлрдПрдХреНрдпреВ рд▓реЗрдЦ рдореЗрдВ: рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ, рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛ "рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрддрд╛рдПрдВред рдореИрдВ рдЬреАрдореЗрд▓ рдЬреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдХреИрд╕реЗ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реВрдВ? "

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

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

рдпрджрд┐ рдЖрдк рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдЖрдк рдХреЛрдб рд▓рд┐рдЦрдиреЗ, рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рднреА рдкрд░рд┐рд╖реНрдХреГрдд рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдЖрдЬ - 1 рдкрдВрдХреНрддрд┐, рдХрд▓ - 20, рдкрд░рд╕реЛрдВ - 300ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд╣реИ:
$(function () { //     $('#button').click(function (event) { alert(this.innerHTML); }); $('#list').uberScrollerPluginStart({ "theme": "red" }); $('#lazy_thing').click(function () { $.get('/lazy/thing/body.html', doLazyLoad.bind(this)); }); /*       */ }); 

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



рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ GMail, Yandex.Mail, Yahoo! Portal!, Twitter рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреЛрдб (10000+ рд▓рд╛рдЗрдиреЗрдВ) рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЧреЗрдВрдж рдорд┐рд▓рддреА рд╣реИ, рдЬреЛ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рддреА рд╣реИред рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЙрд▓рдЭрди рдХреЛ рд╕реБрд▓рдЭрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдХреБрдЫ рднреА рди рдЯреВрдЯреЗред рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдЙрд▓рдЭрди рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕реБрд▓рдЭрд╛рдирд╛ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рд╣реИред
рд╕рд╛рдЗрдЯ рдХреЛрдб рд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрддреНрдпрдзрд┐рдХ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдРрд╕реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░


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

рдврд╛рдВрдЪрд╛

рдХрд┐рд╕реА рднреА рдЖрд╡реЗрджрди рдореЗрдВ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рднреА рдЧреНрд░рд╛рд╣рдХ рдЪреМрдЦрдЯреЗ, рдЪрд╛рд╣реЗ jQuery, Mootools, YUI, dojo, рдХреЗрд╡рд▓ рдПрдХ рдЯреВрд▓рдмреЙрдХреНрд╕ рд╣реИрдВред рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдирд╛рдЦреВрдиреЛрдВ рдХреЛ рдХрд╛рдЯрдиреЗ, рдмреЛрд░реНрдбреЛрдВ рдХреЛ рдХрд╛рдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдЙрдкрдХрд░рдг рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдХреБрдЫ рдРрд╕реЗ рд╣реИрдВ рдЬреЛ рдзреВрд▓ рдЗрдХрдЯреНрдард╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдХрд░рдг рд╣реИрдВ, рддреЛ рднрд╛рд░реА рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Backbone.js + Underscore.js
рдЬреАрд╡рди рдореЗрдВ, JQuery рдмреЙрдХреНрд╕ рдХреЛ Mootools рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЕрдм jQuery рдпрд╛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ? рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдпрд╣ рдЖрд╡реЗрджрди рдХрд╛ рдореВрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреЛрд░

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

рдореЙрдбреНрдпреВрд▓

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

рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ HTML + рд╕реАрдПрд╕рдПрд╕ + рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ + рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░

рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕рд╛рдзрди - рд╕реНрдерд╛рдиреАрдпрдХрд░рдг, рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдФрд░ рдЕрдиреНрдп рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рдбреЗрдЯрд╛ред

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

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

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

рдЙрдк рдореЙрдбреНрдпреВрд▓

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

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

рдЕрдзреАрдирддрд╛


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

- рдХреЗрд╡рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ
- рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдХреЛрд░ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ
- рдХреЗрд╡рд▓ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ
- рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ

рд╕рдВрдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



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

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

рд╕рдВрдЪрд╛рд░


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

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 var Module1 = { "someAction": function () { Module2.getSomeValue(); } }; var Module2 = { "getSomeValue": function () { return 'data'; } }; 

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

рдпрджрд┐ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдПрдХ рдШрдЯрдирд╛ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ (рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ)ред
 //   var Module1 = { "init": function ($) { $.on('event', function (e) { // $ -  jQuery,   sandbox console.log(e.data); }); } }; var Module2 = { "someAction": function ($) { // $ -  jQuery $.trigger('event', 'data'); } }; 

рдореЙрдбреНрдпреВрд▓ 1 рдореЗрдВ, рд╣рдо рдИрд╡реЗрдВрдЯ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ, рдореЙрдбреНрдпреВрд▓ 2 рдИрд╡реЗрдВрдЯ рдЗрд╡реЗрдВрдЯ рдХреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдбреЗрдЯрд╛ рдЦреАрдВрдЪрддрд╛ рд╣реИ

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

рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп


рдШрдЯрдирд╛рдПрдБ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ HTML DOM рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдкреВрд░реНрдг рд╣реИред XHR, JSONP, рдлрд╝реНрд░реЗрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
 //   var Storage = { "read": function (key) { return localStorage[key]; } }; var data = Storage.read('key'), pData = process(data); $.trigger('data', pData); 

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

рдЪрд▓реЛ рд╕реНрдерд╛рдиреАрдп рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ:
 //   var Storage = { "read": function (key, cb) { $.get('/read/' + key, cb); } }; Storage.read('key',function(data) { var pData = processData(data); $.trigger('data', pData); }.bind(this)); 

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

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рддрд░реАрдХреЗ рдбреЗрдЯрд╛ (XHR, рд╕реНрдерд╛рди рдПрдкреАрдЖрдИ, рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ) рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдРрд╕реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдлрд╛рдпрджреЗ

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

рдЙрджрд╛рд╣рд░рдг: рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд┐рд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ


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

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╡рд╣рд╛рдБ jQuery рд╣реЛрдЧрд╛ред рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рд░рд▓реАрдХреГрдд рдмреАрдИрдПрдо рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рдмреНрд▓реЙрдХ, рддрддреНрд╡, рд╕рдВрд╢реЛрдзрдХред рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо $ script.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЯреЗрдореНрдкреНрд▓реЗрдЯ - рд░реЗрдЬрд┐рдЧ рд╕реЗ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрдиред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛

  /app /css -        /blocks /b-module-name /b-module-name.css ... ... /pages /index.css ... /descriptors -   /ModuleName.json ... /locales -   /ModuleName.json ... /modules -   /ModuleName.js ... /templates -   /ModuleName.html ... /views -   /ModuleName.html ... /build -    /lib -   /Core.js /test -  /lib /qunit.css /qunit.js /ModuleName -   ModuleName /index.html /index.js /TestData.js -     /vendors -   /Script.js /jQuery.js ... /index.html -   /index.js -  js ,    /index.json -   ... 

рдореЙрдбреНрдпреВрд▓

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

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

рдореЙрдбреНрдпреВрд▓ рдЙрджрд╛рд╣рд░рдг (DataGenerator рдореЙрдбреНрдпреВрд▓)

 (function(global){ "use strict"; var intervalId; var DataGenerator = { init: function (sandbox) { intervalId = setInterval(function () { sandbox.trigger('newData', Math.random()); }, sandbox.getResource('interval')); }, destroy: function () { clearInterval(intervalId); } }; //  if (!global) { return DataGenerator; } if (!global.exports) { global.exports = {}; } global.exports.DataGenerator = DataGenerator; }(this)) // ;  ! 

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

рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рд╡ рдЙрджрд╛рд╣рд░рдг (рдбреЗрдЯрд╛-рдЬреЗрдирд░реЗрдЯрд░ рдореЙрдбреНрдпреВрд▓)

 { "name": "DataGenerator", "acl": { "trigger:newData": true //     newData }, "resources": { "interval": 1000 } } 

рд╕реНрдерд╛рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг (MessageView рдореЙрдбреНрдпреВрд▓)

 { "text_label": { "ru": " : ", "en": "He said: " } } 

рдирдореВрдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ (рд╕рдВрджреЗрд╢ рджреГрд╢реНрдп рдореЙрдбреНрдпреВрд▓)

 <div class="b-message-view"> <span class="b-message-view__label">{%=label%}</span> <span class="b-message-view__value">{%=value%}</span> </div> 


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

рдХреЛрд░

рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рджреЛрдиреЛрдВ рдХреЗ рджреМрд░рд╛рди рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред jQuery рдХреЗ рджреЛрд╖ рд╕реЗ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реЗрдЧреАред рдЪреВрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ, рд╣рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
  var loaderFactory = function (cacheObject, method, format, methodOwner, type) { return function (name) { var dfd = $.Deferred(), self = this; if (cacheObject[name]) { dfd.resolve(); return dfd.promise(); } function successOrFail(object) { var camelCasedType = type.slice(0, 1).toUpperCase() + type.slice(1); self['push' + camelCasedType](name, object); dfd.resolve(); if (object) { // if fail EventManager.trigger(type + ':loaded', {name: name}); EventManager.trigger(type + ':' + name + ':loaded'); } } var path = Core.descriptor.path[type] + format.replace('$0', name); if (type === 'module') { method.call(methodOwner, path, successOrFail); } else if (type === 'template') { method.call(methodOwner, path, successOrFail, 'html').error(successOrFail); } else { method.call(methodOwner, path, successOrFail).error(successOrFail); } return dfd.promise(); } }; 


ModuleManager

рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдмрдВрдзрдХ рдмрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ (рд╕реНрдЯреИрдЯрд┐рдХ рдЕрд╕реЗрдВрдмрд▓реА) рдХреЗ рдмрд┐рдирд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред
  var ModuleManager = { modules: {}, descriptors: {}, locales: {}, templates: {}, pushModule: function (name, module) {}, pushDescriptor: function (name, descriptor) {}, pushLocale: function (name, locale) {}, pushTemplate: function (name, template) {}, load: function (name) {} }; ModuleManager.getModule = loaderFactory(ModuleManager.modules, require, '$0.js', this, 'module'); ModuleManager.getDescriptor = loaderFactory(ModuleManager.descriptors, $.getJSON, '$0.json', $, 'descriptor'); ModuleManager.getLocale = loaderFactory(ModuleManager.locales, $.getJSON, '$0.json', $, 'locale'); ModuleManager.getTemplate = loaderFactory(ModuleManager.templates, $.get, '$0.html', $, 'template'); 

рдореИрдВрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдВрдХрд╛рд▓ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рди рд▓реЗред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдИ рднреА рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИред рд╕реНрд░реЛрдд рдореЗрдВ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдгред

рд╕рд╛рдБрдЪрд╛ рдЗрдВрдЬрди

рд╣рдо рдЬреЙрди рд░реЗрдЬрд┐рдЧ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
 var templateFactory = function(str, data) {} 

EventManager

рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдИрд╡реЗрдВрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рд╣рдЯрд╛рддрд╛ рд╣реИ, рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдореЗрдВ рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред EventManager рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ jQuery.bind jQuery.trigger jQuery.unbind рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЗрд╕рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдзрд┐ рд╣реЛрдЧреА - hook , рдЬреЛ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣реБрдХ рдХрд░рддрд╛ рд╣реИред рд╣реБрдХ рдлрд╝рдВрдХреНрд╢рди рдИрд╡реЗрдВрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╡реЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рднреА рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИред
  var EventManager = { $: $('<div/>'), hooks: {}, trigger: function (event, data) { if (this.hooks[event]) { // Update event data var result = this.hooks[event](data); // Don't trigger event if (result === false) { return this; } // Trigger with new data data = result || data; } this.$.trigger.apply(this.$, [event, data]); return this; }, bind: function () {}, unbind: function () {}, hook: function (event, hookFunction) { // One hook for example this.hooks[event] = hookFunction; return this; }, unhook: function (event) { delete this.hooks[event]; return this; } }; 

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

рдХреЛрд░

  var Core = { descriptor: {}, runningModules: {}, //  ,   init: function (descriptorOrFileName, callback) {}, //    _initModules: function (callback) {}, //      initModule: function (name, callback) {}, //   destroyModule: function (name) {}, //  HTMLElement    getBox: function (name) {}, //      getTemplateFunction: function (moduleName, templateSelector) {} }; 

рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдФрд░ JSDoc рдмреНрд▓реЙрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред

рдмрд╛рд╣рд░ рд╕реЗ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕рднреА рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВрдЧреЗ:
  var CorePublic = { trigger: $.proxy(EventManager.trigger, EventManager), bind: $.proxy(EventManager.bind, EventManager), unbind: $.proxy(EventManager.trigger, EventManager), on: $.proxy(EventManager.bind, EventManager), getModule: $.proxy(ModuleManager.getModule, ModuleManager), getDescriptor: $.proxy(ModuleManager.getDescriptor, ModuleManager), getLocale: $.proxy(ModuleManager.getLocale, ModuleManager), getTemplate: $.proxy(ModuleManager.getTemplate, ModuleManager), pushModule: $.proxy(ModuleManager.pushModule, ModuleManager), pushDescriptor: $.proxy(ModuleManager.pushDescriptor, ModuleManager), pushLocale: $.proxy(ModuleManager.pushLocale, ModuleManager), pushTemplate: $.proxy(ModuleManager.pushTemplate, ModuleManager), init: $.proxy(Core.init, Core), destroyModule: $.proxy(Core.destroyModule, Core), initModule: $.proxy(Core.initModule, Core), getTemplateFunction: $.proxy(Core.getTemplateFunction, Core) }; 

рд╕реИрдВрдбрдмреЙрдХреНрд╕

рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЕрдкрдирд╛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдирд┐рд░реНрдорд╛рддрд╛ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИред рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╕рднреА рддрд░реАрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  var Sandbox = function (descriptor) { this.descriptor = descriptor || {}; }; Sandbox.prototype.getBox = function () {}; //      -  Sandbox.prototype.is = function (role) {}; Sandbox.prototype.bind = function (event, callback) {}; Sandbox.prototype.unbind = function (event, callback) {}; Sandbox.prototype.trigger = function (event, data) {}; Sandbox.prototype.hook = function (event, hookFunction) {}; Sandbox.prototype.unhook = function (event) {}; Sandbox.prototype.getText = function (message) {}; Sandbox.prototype.getResource = function (resource) {}; Sandbox.prototype.getTemplate = function (templateSelector) {}; 


рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ ( bind, trigger, hook, ...) рдЬреЛ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рдореЙрдбреНрдпреВрд▓ (рдореЙрдбреНрдпреВрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд░реНрдиреЗрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛

рдХрд░реНрдиреЗрд▓ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╣ рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдЧреЛрд▓рд╛рдХрд╛рд░ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдлреЗрдВрдХ рджрд┐рдпрд╛ред
 (function(global, $, require, undefined){ "use strict"; var templateFactory = function(str, data){}; var loaderFactory = function (cacheObject, method, format, self, type) {}; var ModuleManager = {}; var Sandbox = function (descriptor) {}; var EventManager = {}; var Core = {}; var CorePublic = {}; if (!global) { return CorePublic; } if (!global.exports) { global.exports = {}; } global.exports.Core = CorePublic; }(this, jQuery, $script)); 

рдЖрд╡реЗрджрди рдХрд╛ рд╡рд┐рд╡рд░рдг

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рднреА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреМрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реНрдерд┐рдд рд╣реИрдВ, рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореВрд▓ рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рд╡рд░рдгрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
 { "modules": ["MessageView", "DataGenerator", "Logger", "Hook"], "layout": { "MessageView": ".b-message-view" }, "locale": "ru", "path": { "descriptor": "./app/descriptors/", "module": "./app/modules/", "locale": "./app/locales/", "template": "./app/templates/" } } 

рдЖрд╡реЗрджрди: index.js

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

MessageView - newData рдЗрд╡реЗрдВрдЯ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
DataGenerator - рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рджреВрд╕рд░реА рдмрд╛рд░ рдПрдХ рдирдпрд╛рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ - рдирдпрд╛рдбрд╛рдЯрд╛ рдШрдЯрдирд╛ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ рдФрд░ рдЬреЛ рдЖрддрд╛ рд╣реИ рдЙрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ
рд╣реБрдХ - рдирдпрд╛рдбрд╛рдЯрд╛ рдШрдЯрдирд╛ рдкрд░ рдПрдХ рд╣реБрдХ рд▓рдЯрдХрд╛редрдпрджрд┐ рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЖрддреА рд╣реИ, рддреЛ рд╣реБрдХ рдЗрд╡реЗрдВрдЯ рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ 0.5 рд╕реЗ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ 100 рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднрд╛


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

рдЕрд╕реЗрдВрдмрд▓реА рдЗрдВрдбреЗрдХреНрд╕ редjs

Index.js рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╡реИрдХреНрдпреВрдо-рдЧреЛрд▓рд╛рдХрд╛рд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ: рдЖрд╡рд╢реНрдпрдХрддрд╛, buildFromред рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреНрд▓реЙрдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдлрдВрд╕рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ)ред index.js рдХреЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред
 /*$require: ./lib/Core.js */ (function (Core) { "use strict"; /*$buildFrom ./index.json */ Core.on('ready', function () { Core.trigger('newData', 'Pewpew'); }); Core.init(/*$require*/'./index.json'/*$*/); }(this.exports.Core)) 

рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
 //   Core.js (function (Core) { "use strict"; // + descriptors/Logger.json Core.pushDescriptor("Logger", { "name": "Logger", "acl": { "listen:newData": true, "listen:ready": true } }); // - descriptors/Logger.json // + modules/Logger.js Core.pushModule("Logger", (function(global){ // ... }(this))); // - modules/Logger.js // + locales/Logger.js Core.pushLocale("Logger", {}); // - locales/Logger.js // ...  -  .... Core.on('ready', function () { Core.trigger('newData', 'Pewpew'); }); Core.init({ "modules": ["MessageView", "DataGenerator", "Logger", "Hook"], "layout": { "MessageView": ".b-message-view" }, "locale": "ru", "path": { "descriptor": "./app/descriptors/", "module": "./app/modules/", "locale": "./app/locales/", "template": "./app/templates/" } }); }(this.exports.Core)) 


рд╕реА requireрд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди buildFromрдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ Logger(рдмрд╛рдХреА рднреА рдХрд┐рд╕реА рддрд░рд╣ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ)ред рддрд░реНрдХ buildFromрдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ "en": "He said: ") рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐ред
рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдореЙрдбреНрдпреВрд▓ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ index.css

рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ 1 рдмреНрд▓реЙрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдХрд▓реЗрдХреНрдЯрд░ рдореЗрдВ рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 /*$buildFrom: ../../index.json */ /* app/css/blocks/b-message-view/b-message-view.css */ .b-message-view { color: green; font-family: monospace; } 

buildFromрд╕рдВрджрд░реНрдн рдореЗрдВ рддрд░реНрдХ cssрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рд╡рд╣ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд▓реЙрдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдпрд╣ b-message-viewрд╕рднреА рд╕рд░рд▓ рд╣реИред рдпрд╣ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, BEM рдмрд┐рд▓реНрдбрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмреНрд▓реЙрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдПрдХ json рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ index.html

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ index.cssрдФрд░ рд╣реИ index.jsред рд╣рдо рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗindex.html
 <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title></title> <!--$require: index.css--> <link rel="stylesheet" href="app/css/pages/index.css" /> <!--$--> </head> <body> <!--$buildFrom: index.json--> <div class="b-message-view"></div> <!--$--> <script type="text/javascript" src="http://yandex.st/jquery/1.6.1/jquery.js"></script> <!--$require: index.js--> <script type="text/javascript" src="./vendors/Script.js"></script> <script type="text/javascript" src="./lib/Core.js"></script> <script type="text/javascript" src="./index.js"></script> <!--$--> </body> </html> 

buildFromHtml рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рддрд░реНрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ (css рдХреЗ рд╕рдорд╛рди): рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд div рдмрдирд╛рддрд╛ рд╣реИ b-message-viewред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЖрдк xslt, рд╣реЛрд╢рд┐рдпрд╛рд░ рд╕рдВрдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣рдо рдкреНрд░рд╛рдкреНрдд:
 <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="/index.css" /> </head> <body> <div class="b-message-view"></div> <script type="text/javascript" src="http://yandex.st/jquery/1.6.1/jquery.js"></script> <script type="text/javascript" src="/index.js"></script> </body> </html> 

рдореЗрдХрдлрд╛рдЗрд▓ - рдорд╣рд╛рд╕рднрд╛

рдХрд▓реЗрдХреНрдЯрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:
  1. Index.css рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдЪрд▓рд╛рддрд╛ рд╣реИ
  2. Index.css рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ / uri, рдЖрджрд┐ред
  3. Index.css рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ (gz рд╡реИрдХрд▓реНрдкрд┐рдХ)
  4. Index.css рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рддрд╛ рд╣реИ: рдЪрд┐рддреНрд░
  5. рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ (рдиреАрдЪреЗ)
  6. Index.js рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдЪрд▓рд╛рддрд╛ рд╣реИ
  7. рд╕реВрдЪрдХрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХред рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ
  8. Index.js (gz рд╡реИрдХрд▓реНрдкрд┐рдХ) рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ
  9. рдЖрдкрдХреЗ OS .deb .rpm рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ
  10. рдкреИрдХреЗрдЬ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ
  11. рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг


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

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

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рд╛рд░реВрдк рд╣реЛрддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдШрдЯрдирд╛ рдирдореВрдирд╛ рдмрдирд╛рдПрдБрдЧреЗ:
 var TestData = { "newData": function () { var data = [NaN, Infinity, window, Error, 'pewpewpew', '<b>Pewpew</b>', '"', '\'', new Date, Date, Math, 42, 8, -1, 0, false, true]; return data; } }; 

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

рдЯреЗрд╕реНрдЯ рдХреЛрдб: index.js

 // MessageView test (function (Core, $, TestData, ok, test, module, equals, expect, asyncTest, start, stop) { "use strict"; //    var ApplicationEnvironment = { "modules": ["MessageView"], "layout": { "MessageView": ".b-message-view" }, "locale": "ru", "path": { "descriptor": "../../app/descriptors/", "module": "../../app/modules/", "locale": "../../app/locales/", "template": "../../app/templates/" } }; Core.on('ready', function () { module("MessageView"); //  1 test("listen:newData", function() { var testItems = TestData["newData"](), $MessageView = Core.getBox("MessageView"), template = Core.getTemplateFunction("MessageView", '.b-message-view'), label = Core.getText("MessageView", "text_label"); expect(testItems.length); // >>> put your code $.each(testItems, function (index, text) { Core.trigger("newData", [text]); // >>> put your code var expected = template({label: label, value: text}); // <<< equals(expected, $MessageView.html(), 'Should be "text_label: value"'); // <<< }); }); //  2 test("trigger:newData:display", function() { var testItems = TestData["newData"](), $MessageView = Core.getBox("MessageView"), template = Core.getTemplateFunction("MessageView", '.b-message-view'); expect(testItems.length); // >>> put your code Core.on("newData:display", function () { // <<< ok(true); // <<< }); // <<< $.each(testItems, function (index, item) { Core.trigger("newData", [item]); // >>> put your code }); }); }); Core.init(ApplicationEnvironment); }(this.exports.Core, jQuery, TestData, ok, test, module, equals, expect, asyncTest, start, stop)) 

рдХреЛрдб рдХреЗ рдЗрд╕ рд╕рднреА рджреНрд░рд╡реНрдпрдорд╛рди рдореЗрдВ рд╕реЗ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЗрд╡рд▓ 5 рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ " <<<" рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ ред

рдкрд░реАрдХреНрд╖рдг рдХреЛрдб index.html рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рдХреЛрдб рдХрд╡рд░реЗрдЬ


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

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

рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкреНрд░рд▓реЗрдЦрди рд╡рд┐рдзрд╛рдирд╕рднрд╛


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

рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ


рдореИрдВ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рд╡реЗ рди рдХреЗрд╡рд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИрдВред
  1. рдЕрдиреНрдп рд▓реЛрдЧ рдЖрдкрдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ - рдЙрдирдХреЗ рдХрд╛рдо рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдордп рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВ
  2. ( ). JSLint, JSHint !
  3. .
  4. , , ! $textarea.val($textarea.val())
  5. : . тАФ ! тАФ . тАФ . : foo, temp. , ( tmp), , тАФ !
  6. JavaScript, HTML CSS ( ). HTML тАФ , . CSS тАФ . JavaScript тАФ .
  7. . Element.style. , html ( FTW!). CSS Expressions!
  8. . 2-3 !
  9. , . тАФ ! (Array.prototype, Function.prototype)
  10. , тАФ , !
  11. instanceof, typeof, Object.prototype.toString magic
  12. ! URL ; ; , ,
  13. рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг (js-test-driver), рдХреЛрдб рд╕рддреНрдпрд╛рдкрди (JSLint, JSHint), рдХреЛрдб рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдкреНрд░рд▓реЗрдЦрди (JSDocToolkit, Dox) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реИ, рддреЛ Ctrl + S рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдкрд░реАрдХреНрд╖рдг, рдореЙрдбреНрдпреВрд▓ рдХрдВрдХрд╛рд▓ред

рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб


GitHub рд╕реНрдХреЗрд▓реЗрдмрд▓-рдЬреЗрдПрд╕-рдРрдк (рдореЙрдбреНрдпреВрд▓, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда) рдкрд░ рд╕реНрд░реЛрдд рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ

: рдЖрд╡реЗрджрди рдореЗрдВ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдзрд╛рдирд╕рднрд╛, рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА, рд╕рднреА рдкрд░реАрдХреНрд╖рдг (рд╕рдВрджреЗрд╢ рджреГрд╢реНрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░), рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд▓реЗрдЦрди рд╡рд┐рдзрд╛рдирд╕рднрд╛ред

рдкрдврд╝реЗрдВ / рджреЗрдЦреЗрдВ

  1. рдПрдВрдбреНрд░рдпреВ рдбреНрдпреВрдкреЙрдиреНрдЯ (рдЧреЛрд╡рд▓реНрд▓рд╛, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк.рдЬреЗрдПрд╕, рдПрд╕ 2) - рдмрдирд╛рдП рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
  2. Nicholas Zakas (Yahoo!, YUI, YUI Test) тАФ Writing Maintainable JavaScript . ,
  3. Nicholas Zakas тАФ Scalable JavaScript Application Architecture
  4. " JavaScript " .
PS рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, JSHint / JSLint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред рдмрдВрдж рдХрд░реЛ! рд░реАрдореЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдЕрдзрд┐рдХ рд░реАрдореЗрдХ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╣реЛрдЧрд╛)ред рдирдП рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдирдпрд╛ рдХреЛрдб рдмрдирд╛рдПрдВ, рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрджрд▓рддреЗ рд╣реИрдВред

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

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


All Articles