рдореЙрдбреНрдпреВрд▓рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╛рд╕



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

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

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

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

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



рдЙрдкрдпреЛрдЧ рдХреА рд╢рд░реНрддреЗрдВ


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

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

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


рдореБрджреНрджреЛрдВ рдкрд░ рдЕрдзрд┐рдХ


рдиреНрдпреВрдирд╛рдзрд┐рдХрддрд╛ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдирд╛рдо рдХреА рдЯрдХреНрдХрд░


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

 //  greeting.js var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; function writeHello(lang) { document.write(helloInLang[lang]); } //  hello.js function writeHello() { document.write('The script is broken'); } 


рдЬрдм greeting.js hello.js рдФрд░ рдлрд┐рд░ hello.js рдкреГрд╖реНрда рд╕реЗ рдЬреБрдбрд╝реЗ hello.js , рддреЛ рд╣рдо рдЯрдХрд░рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдЧреНрд░реАрдЯрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп "рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ" рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред

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

рдмрдбрд╝реЗ рдХреЛрдбрдмреЗрд╕ рд╕рдкреЛрд░реНрдЯ


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

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


рд╕реАрдзреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (1999)


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

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

рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рд╕рд╛рд░ dojo.require рдлрд╝рдВрдХреНрд╢рди (рдЬреЛ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рд╣реИ) рдХреЗ рд╕реНрдкрд╖реНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб (Dojo - рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕реНрдерд╛рди рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВред

рдЖрдЗрдП Dojo 1.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВ:

 //  greeting.js dojo.provide("app.greeting"); app.greeting.helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; app.greeting.sayHello = function (lang) { return app.greeting.helloInLang[lang]; }; //  hello.js dojo.provide("app.hello"); dojo.require('app.greeting'); app.hello = function(x) { document.write(app.greeting.sayHello('es')); }; 


рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ dojo.provide рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ dojo.require рдлрд╝рдВрдХреНрд╢рди dojo.require рд╣реЛрдиреЗ рдкрд░ рдХреЛрдб рд▓реЛрдб рдХрд┐рдпрд╛ dojo.require ред рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 1.7 рд╕реЗ рдкрд╣рд▓реЗ Dojo рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрднреА рднреА Google рдмрдВрдж рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдиреЗрдорд╕реНрдкреЗрд╕ рдкреИрдЯрд░реНрди (2002)


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

рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрд░ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ ( document.write() , window.alert() ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдЧреБрдгреЛрдВ (рд╡рд┐рдзрд┐рдпреЛрдВ) рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЖрдЗрдП рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд░рдЦреЗрдВред

 //  app.js var app = {}; //  greeting.js app.helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; //  hello.js app.writeHello = function (lang) { document.write(app.helloInLang[lang]); 


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

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


рдореЙрдбреНрдпреВрд▓ рдкреИрдЯрд░реНрди (2003)


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

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

 var greeting = (function () { var module = {}; var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; module.getHello = function (lang) { return helloInLang[lang]; }; module.writeHello = function (lang) { document.write(module.getHello(lang)) }; return module; }()); 


рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рд╕реНрд╡-рдЪрд╛рд▓рд╛рди рд╕рдорд╛рд░реЛрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ - рдПрдХ рдЬреЛ рдШреЛрд╖рдгрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ module рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ getHello() рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдПрдХ рдХреНрд▓реЛрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ helloInLang рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ helloInLang ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, helloInLang рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдПрдХ рдкрд░рдорд╛рдгреБ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд┐рдирд╛ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдХреЗ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рднрд▓реЗ рд╣реА helloInLang рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣реАрдВ рдФрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

рдиреЗрдЯ рдкрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╣рд▓рд╛ рдЙрд▓реНрд▓реЗрдЦ 2003 рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рдерд╛, рдЬрдм рд░рд┐рдЪрд░реНрдб рдХреЛрд░реНрдирдлреЛрд░реНрдб рдиреЗ comp.lang.javascript рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 2005-2006 рдореЗрдВ, рдпрд╛рд╣реВ рдХреЗ YUI рдврд╛рдВрдЪреЗ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛! рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдХреЗ рдиреЗрддреГрддреНрд╡ рдореЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рдкреНрд░реЗрд░рдгрд╛ 2008 рдореЗрдВ рджреА рдЧрдИ рдереА, рдЬрдм рдбрдЧрд▓рд╕ рдиреЗ рдЕрдкрдиреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХ рдЧреБрдб рдкрд╛рд░реНрдЯреНрд╕ рдореЗрдВ "рдореЙрдбреНрдпреВрд▓" рдкреИрдЯрд░реНрди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛ред

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


рдЦрд╛рдХрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (2006)


рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд╛рд░ рдореЗрдВ рдЕрдЧрд▓рд╛ рдкреИрдЯрд░реНрди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореИрдВрдиреЗ рдпрд╣ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк 1.4 (2006) рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

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

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

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

 //  app.tmp.js /*borschik:include:../lib/main.js*/ /*borschik:include:../lib/helloInLang.js*/ /*borschik:include:../lib/writeHello.js*/ //  main.js var app = {}; //  helloInLang.js app.helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; //  writeHello.js app.writeHello = function (lang) { document.write(app.helloInLang[lang]); }; 


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


рдЯрд┐рдкреНрдкрдгреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (2006)


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

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

рдпрджрд┐ рд╣рдо LazyJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреНрдпрд╛ рджрд┐рдЦреЗрдЧрд╛:

 //  helloInLang.js var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; //  sayHello.js /*! lazy require scripts/app/helloInLang.js */ function sayHello(lang) { return helloInLang[lang]; } //  hello.js /*! lazy require scripts/app/sayHello.js */ document.write(sayHello('en')); 


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


рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (2007)


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

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЙрдкрдпреЛрдЧ рдХрд┐ рдореБрдЭреЗ 2007 рдХреА рддрд╛рд░реАрдЦреЗрдВ рдорд┐рд▓реЗрдВред рдпрд╣ MooTools 1.1 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

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

 //  deps.json { "files": { "main.js": ["sayHello.js"], "sayHello.js": ["helloInLang.js"], "helloInLang.js": [] } } //  helloInLang.js var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; //  sayHello.js function sayHello(lang) { return helloInLang[lang]; } //  main.js console.log(sayHello('en')); 


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

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


рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкреИрдЯрд░реНрди (2009)


рдирдП YUI3 рдореЙрдбреНрдпреВрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдпрд╛рд╣реВ! рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдиреЗ рдПрдХ рдкреЗрдЬ рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред YUI3 рд╕реЗ рдкрд╣рд▓реЗ, рдврд╛рдВрдЪреЗ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рд╡рд╛рд▓реА рд░реВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, YUI3 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдбрдо рдореВрд░ рдиреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореЙрдбреНрдпреВрд▓рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:

 //  sandbox.js function Sandbox(callback) { var modules = []; for (var i in Sandbox.modules) { modules.push(i); } for (var i = 0; i < modules.length; i++) { this[modules[i]] = Sandbox.modules[modules[i]](); } callback(this); } //  greeting.js Sandbox.modules = Sandbox.modules || {}; Sandbox.modules.greeting = function () { var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; return { sayHello: function (lang) { return helloInLang[lang]; } }; }; //  app.js new Sandbox(function(box) { document.write(box.greeting.sayHello('es')); }); 


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

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


рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (2009)


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

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

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

рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП, рдХреЛрдгреАрдп рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ, (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмреЗрд╣рдж рд╕рдВрд╢реНрд▓рд┐рд╖реНрдЯ рдирд┐рдХрд▓рд╛):

 //  greeting.js angular.module('greeter', []) .value('greeting', { helloInLang: { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }, sayHello: function(lang) { return this.helloInLang[lang]; } }); //  app.js angular.module('app', ['greeter']) .controller('GreetingController', ['$scope', 'greeting', function($scope, greeting) { $scope.phrase = greeting.sayHello('en'); }]); 


рдпрджрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдкреГрд╖реНрда рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рдо рдкреГрд╖реНрда рдкрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗред

рдЕрдм DI рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдгреАрдп 2 рдФрд░ рд╕реНрд▓реЙрдЯ рдврд╛рдВрдЪреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рд╣реИрдВ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рдврд╛рдВрдЪреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИрдВред


рдХреЙрдордирдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ (2009)


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

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

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

CommonJS рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ

 //  greeting.js var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; var sayHello = function (lang) { return helloInLang[lang]; } module.exports.sayHello = sayHello; //  hello.js var sayHello = require('./lib/greeting').sayHello; var phrase = sayHello('en'); console.log(phrase); 


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

 (function (exports, require, module, __filename, __dirname) { // ... // Your code is injected here! // ... }); 


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

рдмрд╛рдмреЗрд▓ рдХреА require рддрдм require рдЬрдм ES2015 рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд╛рдирд┐рдВрдЧ (рд╣рдо рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ):

 export default something; 


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

 exports.default = something; 


рд╡реЗрдмрдкреИрдХ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рднреА рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред require.ensure , require.cache , require.context , рд▓реЗрдХрд┐рди рдЙрдирдХреА рдЪрд░реНрдЪрд╛ рд▓реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

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


AMD (2009)


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

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

, , тАФ ( , ); . , AMD (Asynchronous Module Definition).

AMD, :

 // file lib/greeting.js define(function() { var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; return { sayHello: function (lang) { return helloInLang[lang]; } }; }); // file hello.js define(['./lib/greeting'], function(greeting) { var phrase = greeting.sayHello('en'); document.write(phrase); }); 


hello.js . define , . . , define , , . .

2011 : AMD, CommonJS .

, AMD , npm bower AMD .


UMD (2011)


, AMD CommonJS Modules. AMD , . CommonJS Modules - Node.js Browserify .

, . AMD- , CommonJS Modules (Node.js), CommonJS , AMD: RequireJS, curl.js. , RequireJS CommonJS-, . UMD тАФ Universal Module Definition .

тАФ . UMD GitHub . , , , Q .

Q : ( script) Node.js Narwhal ( CommonJS Modules). , Q AMD. , UMD. UMD.

CommonJS AMD:

 (function(define) { define(function () { var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; return { sayHello: function (lang) { return helloInLang[lang]; } }; }); }( typeof module === 'object' && module.exports && typeof define !== 'function' ? function (factory) { module.exports = factory(); } : define )); 


, . :

 function (factory) { module.exports = factory(); } 


CommonJS-. AMD-, define. .

, , Node.js, UMD. UMD , moment.js lodash .


Labeled Modules (2012)


2010 39 JavaScript. ES6 Modules. 2012 , . , ( React), . , , ES3, , , . Labeled Modules .

тАФ (labels). import export , : тАФ exports, тАФ require.

, , .

 //  greeting.js var helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; exports: var greeting = { sayHello: function (lang) { return helloInLang[lang]; } }; //  hello.js require: './lib/greeting'; var phrase = greeting.sayHello('es'); document.write(phrase); 


, Labeled Modules, .

, . 2012 CommonJS AMD, . , Labeled Modules webpack , JS- .


YModules (2013)


;). - , CommonJS AMD? , , CommonJS, AMD .

. API ( API .) , JS- . , , тАФ .

2013 , dfilatov .

YModules :

 //  greeting.js modules.define('greeting', function(provide) { provide({ helloInLang: { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }, sayHello: function (lang) { return this.helloInLang[lang]; } }); }); //  app.js modules.require(['greeting'], function(greeting) { document.write(greeting.sayHello('ru')); }); // : ", !" 


YModules AMD. тАФ provide , return .

┬л┬╗ , . , greeting.js - ( тАФ setTimeout ), , , :

 //  greeting.js modules.define('greeting', function(provide) { //     1  setTimeout(function () { provide({ helloInLang: { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }, sayHello: function (lang) { return this.helloInLang[lang]; } }); }, 1000); }); // : app.js modules.require(['greeting'], function(greeting) { document.write(greeting.sayHello('ru')); }); // : ", !" 


, YModules . .

 //  moduleOnLevel1.js modules.define('greeting', function(provide) { provide({ helloInLang: { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }, sayHello: function (lang) { return this.helloInLang[lang]; } }); }); //  moduleOnLevel2.js modules.define('greeting', function(provide, module) { //   sayHello module.sayHello = function (lang) { return module.helloInLang[lang].toUpperCase(); }; provide(module); }); //  app.js modules.require(['greeting'], function(greeting) { document.write(greeting.sayHello('ru')); }); // : ", !" 


, sayHello greeting , . , YModules (, module ).

YModules . i-bem.js .


ES2015 Modules (2015)


ECMAScript (TC39), , , JavaScript. , .

2010 Mozilla . , . asm.js, emscripten, servo.

, 2015 ES2015, , , . :

 //  lib/greeting.js const helloInLang = { en: 'Hello world!', es: '┬бHola mundo!', ru: ', !' }; export const greeting = { sayHello: function (lang) { return helloInLang[lang]; } }; //  hello.js import { greeting } from "./lib/greeting"; const phrase = greeting.sayHello("ru"); document.write(phrase); 


, import export .

- , , , Module Loader API, , , .

, ES2015 . , ES5, Babel : .


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


JS. , , , - . тАФ , - . , , , - , .

┬л JavaScript ┬╗ , , .

GitHub .

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


All Articles