рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рд╢реВрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд▓рдЧрднрдЧ рдкрд╛рдБрдЪ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдореВрд░реНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд MVVM / MVP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдФрд░ рдЕрдореВрд░реНрдд рдХреЛ рд╕рд╛рдл рд░рдЦрдиреЗ рдХреА рдХрдард┐рдирд╛рдИ рд╣реИ, рди
рдХрд┐ SOLID рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдкреВрд░реНрдг
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ред
рд╕рдордп рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдореБрдЦреНрдп рдкреИрдЯрд░реНрди рдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ
рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди ред рдФрд░ рдореИрдВрдиреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдЙрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдмреЗрд╢рдХ, рдЬреЗрдПрд╕ рдЗрд╕ рдкреИрдЯрд░реНрди (рд╕рдорд╛рди рд░рд┐рдлреНрд▓реЗрдХреНрд╕рд┐рд╕ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐) рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдХрдИ рдПрдХреНрд╕реЗрдкрдЯреЗрдВрд╕ рдХреНрд░рд╛рдЗрдЯреЗрд░рд┐рдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдореИрдВ рдЬреЗрдПрд╕ рдЬреИрд╕реЗ рдЕрдиреВрдареЗ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдЕрдкрдирд╛рдиреЗ рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
1. рд╕рднреА рд╕рдВрднрд╡ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВред (рд╕рд╛рдорд╛рдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)
2. рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЖрд╡реЗрджрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
3. рдПрдХ рдкреВрд░реНрдг рдирд┐рд░реНрднрд░рддрд╛ рдирдХреНрд╢рд╛ рд╣реИред
4. рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рднреА "рдирд┐рд╣рд┐рдд" рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
5. рдПрдХ рдРрд╕рд╛ рдХреЛрдб рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ 100% рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗрдХрдИ рджрд┐рдиреЛрдВ рддрдХ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдореИрдВ рдбреАрдЖрдИ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╢рд╛рдо рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ред рдлрд┐рд░, рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдкрд░, рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ (WYSIWYG рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ) рд▓рд┐рдЦрд╛ред рдирддреАрдЬрддрди, рдореИрдВ рдПрдХ рдЫреЛрдЯреЗ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдкрд╛рд╕ рдЖрдпрд╛, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рддреБрд░рдВрдд рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА - рдХрд┐ рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЗрдПрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрд┐рдХ рдорд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЖрд▓реЛрдЪрдирд╛ рдкрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдХреЗрд╕ 1
GreeterClass рд╡рд░реНрдЧ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рд╡рд┐рдзрд┐ рдФрд░ рд╕реНрд╡рд╛рдЧрдд рдкрд╛рда рдХреЛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
var GreeterClass = function(){ this.say = function(){ var method = this._getGreetMethod(); var greet = this._getTextMsg(); method(greet); }; }; SERVICES['constructor']['greet-class'] = GreeterClass;
рд╣рдо рд╡рд░реНрдЧ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
SERVICES['dependency']['greet-class'] = { 'greetMethod' : {'object' : 'alert'}, 'textMsg' : {'value' : 'Hello world'} };
рд╣рдо GreeterClass рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдзрд┐:
DI.get('greet-class').say();
рдкрд░рд┐рдгрд╛рдо:

рдпреБрдкреАрдбреА
рдпрд╣ рд▓реЗрдЦ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реБрдЖред рдХреЙрд▓ рдХреЗ рдмрд╛рдж:
DI.get('greet-class').say();
DI рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ:
1. рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ 'рдЕрднрд┐рд╡рд╛рджрди-рд╡рд░реНрдЧ' рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2. рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рднрд░реА рд╣реБрдИ рд╣реИрдВред
3. рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдБрдЪ рдЪрд▓ рд░рд╣реА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдирд╛рдореЛрдВ рдХреЗ рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдирд╛рдо рдХреЗ рд╕рд╛рде 'рдЧреНрд░реАрдЯрд┐рдВрдЧ-рдХреНрд▓рд╛рд╕' рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред
4. рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ рдирд╣реАрдВ рджреЗрдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдПрдХ рдРрд╕реЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрд╕рд░реНрдЧ _get рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЬрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред
5. рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ рдореМрдЬреВрдж рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд╣ рд╣реИ, ._getGreetMethod () рдФрд░ред _getTextMsg () рдФрд░ рдХреГрддреНрд░рд┐рдо DI рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛:
SERVICES['constructor']['stack'] = function(){ var stack = []; this.flush = function(){ console.log(stack); }; this.push = function(el){ stack.push(el); return this; }; } SERVICES['dependency']['stack'] = { 'push' : [ {'value' : 1}, {'value' : 2}, {'value' : 3} ] }; DI.get('stack').flush();
рдпрд╣рд╛рдБ DI рдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдкреБрд╢ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ред
рдХреЗрд╕ 2
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ:
SERVICES['dependency']['greet-class'] = { 'greetMethod' : {'object' : 'console.log'}, 'textMsg' : {'value' : 'Hello world'} };
рдкрд░рд┐рдгрд╛рдо:

рдореИрдВрдиреЗ рдЕрдореВрд░реНрдд рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдореИрдВрдиреЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред
рдХреЗрд╕ 3
рдЕрдм рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБ рдХреЛ рдирдорд╕реНрдХрд╛рд░рдорд┐рдереЛрдб рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕реЗрд╡рд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдбреАрдЖрдИ рдХреЗ рдкрд╛рд╕ рдХрдИ рдЕрдиреНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдВ рднреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ
"рдмрд╣реБ" рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
SERVICES['config']['greet-class'] = { 'singleton' : true } DI.get('greet-class') === DI.get('greet-class');
рдХреЗрд╕ 4
рдореБрдЭреЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ:
DI.get('greet-class').say();
рдХреЗрд╕ 5
"рд╣реИрдХреНрд╕" рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛ рдбреАрдЖрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ (рдХрднреА-рдХрднреА рдЖрд╡рд╢реНрдпрдХ) рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ;
SERVICES['dependency']['greet-class'] = { 'greetMethod' : {'value' : function(txt){document.body.innerHTML = txt}}, 'textMsg' : {'value' : 'Hello world'} }; DI.get('greet-class').say();
рдкрд░рд┐рдгрд╛рдо:

рдкрд░рд┐рдгрд╛рдо
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ DI рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
/ * рд╣реИрдХ рдХреЗ рдмрд┐рдирд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ * /
DEPENDENCY['application'] = { 'template-manager' : { 'addWidgetModel' : [ { 'service' : 'widget-model', 'dependency' : { 'domainObject' : {'instance' : function(){return WidgetDO(incomingWidget);}}} }, { 'service' : 'widget-model', 'dependency' : { 'domainObject' : {'instance' : function(){return WidgetDO(incomingWidget2);}}} } ], 'toolsManager' : { 'service' : 'widget-manager', 'dependency' :{ 'addRenderer' : { 'service' : 'text-tools-renderer', 'dependency' : { 'richView' : { 'service-constructor' : 'rich-view', 'dependency': { 'setEventManager' : { 'service' : 'event-manager', 'dependency' : { 'setContext' : {'poll' : 'rich-view'} } }, 'template' : {'value' : 'code/template/tools.html'} } } } }, 'addHandler' : {'instance' : 'TextToolsHandler'}, 'containerRenderer' : { 'service' : 'rich-view', 'dependency': { 'setEventManager' : { 'service' : 'event-manager', 'dependency' : { 'setContext' : {'poll' : 'rich-view'} } }, 'template' : {'value' : 'code/template/tools-container.html'} } } } }, 'editorManager' : { 'service' : 'widget-manager', 'dependency' :{ 'addRenderer' : { 'service' : 'text-editor-renderer', 'dependency' : { 'globalEventManager' : {'service' : 'global-event-manager'}, 'richView' : { 'service-constructor' : 'rich-view', 'dependency': { 'setEventManager' : { 'service' : 'event-manager', 'dependency' : { 'setContext' : {'poll' : 'rich-view'} } }, 'template' : {'value' : 'code/template/editor.html'} } } } }, 'addHandler' : {'instance' : 'TextEditorHandler'}, 'containerRenderer' : { 'service' : 'rich-view', 'dependency': { 'setEventManager' : { 'service' : 'event-manager', 'dependency' : { 'setContext' : {'poll' : 'rich-view'} } }, 'template' : {'value' : 'code/template/editor-container.html'} } } } }, 'applicationRenderer' : { 'service' : 'rich-view', 'dependency': { 'setEventManager' : { 'service' : 'event-manager', 'dependency' : { 'setContext' : {'poll' : 'rich-view'} } }, 'template' : {'value' : 'code/template/application.html'} }} }, 'widget-manager' : {}, 'widget-model' : { 'eventManager' : { 'service' : 'event-manager', 'dependency' : { 'setContext' : {'poll' : 'widget-model'} } } }, 'global-event-manager' : { 'context' : {'object' : 'window'} } }; SERVICES['config'] = { 'global-event-manager' : { 'singleton' : true } };
рд╡рд╛рд╣, рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдШреЛрдВрд╕рд▓реЗ рдФрд░ рдореБрджреНрд░рд╛рдУрдВ? рдЦреИрд░, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рдпрд╣ рдХрд╛рд░реНрдб рднреА рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╕рдордЭреЗрдВред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЖрдк рддреБрд░рдВрдд рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирдХреНрд╢рд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдм рдХреБрдЫ рд▓реЙрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рд╕рд╣реА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рдирдХ рдПрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд╣ рдПрдХ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреЗрдЦреЗрдВрдЧреЗред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЦреБрдж рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдкреНрд░рдмрдВрдзрдХ рджреЛрдиреЛрдВ рдХреА рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдЖрд▓реЛрдЪрдирд╛ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
GIThub рдкрд░ DI рдХреЛрдб рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХрдИ рдмрд┐рдВрджреБ "рд╕рд░рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ", рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рд╕реИрдорд╕рдВрдЧ рд╕реНрдорд╛рд░реНрдЯрдЯреАрд╡реА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ "рдЕрдиреБрдХреВрд▓рд┐рдд" рд╣реИред рдмрд╕ рдореИрдВ рдЫрдбрд╝реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
KISS рд╕рд┐рджреНрдзрд╛рдВрддред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдЧрд░ DI рдЦреБрдж рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ JSON рдФрд░ XML рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд┐рдЧрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред
рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реАрдзреЗ рд╡реЗрдмрдХрд┐рдЯ рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдлрд╕реЛрд╕ред
рдкреБрдирд╢реНрдЪ: рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдкрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдПрдХ рд╣рд╛рдереА рдХреЗ рд░реВрдк рдореЗрдВ рдЦреБрд╢ рд╣реВрдВред рд╕рдВрдкреВрд░реНрдг рд╕реБрдЦ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдмрдВрдз рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред
* рдХреЗрд╕ 1 рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛