рдЕрдиреБрдЪреНрдЫреЗрдж рдкреБрд░рд╛рдирд╛ рд╣реИ,
Warp9 рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЕрджреНрдпрддрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВ

рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдФрд░ рдирд┐рдХрдЯ-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ: рдХреЛрдгреАрдп, рдиреЙрдХрдЖрдЙрдЯ, рд░рд┐рдПрдХреНрдЯ, рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ ... рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдХреНрдпреЛрдВ рд▓рд┐рдЦреЗрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЙрди рд╕рднреА рдореЗрдВ, рдПрдХ рдШрд╛рддрдХ рджреЛрд╖ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдФрд░ рднреА рд╣реИрдВред
рдЪреВрдВрдХрд┐ RxJS рдФрд░ Bacon.js рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ, рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╢реНрди рдмрд╕ рдЙрди рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ GUI рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдирд╛ рдереЛрдбрд╝рд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмрдбрд╝рд╛ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдЧрд╛ред
рдХрд┐рдВрд╡рджрдВрддреА рдФрд░ рдЯрд┐рдкреНрдкрдгреА
рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдХреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрдХрдиреАрдХ рд╣реИ?
[рез] рдХрдИ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдпреЛрдЬрдХрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИрдХреНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ (рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЬреАрдд рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЪреЗрддрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
[реи] рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рдПрдирдЬреА-рд╢рд╛рдорд┐рд▓, рдЯреЗрдореНрдкреНрд▓реЗрдЯ-рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рд╕рд╣рд┐рдд рддрдВрддреНрд░ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЗрд╕ рд╕реЗ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЬрдЯрд┐рд▓ JS рдПрдкреНрд▓реАрдХреЗрд╢рди рди рдХреЗрд╡рд▓ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд▓реЙрдЬрд┐рдХ рднреА рд╣реИ, рдФрд░ AngularJS рдореЗрдВ рд▓реЙрдЬрд┐рдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рдЕрд▓рдЧ рд╣реИ (рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ, рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рд▓реЙрдЬрд┐рдХ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЪреЗрд╣рд░реЗ рдкрд░ рдХреЛрдИ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реИ), рд▓реЗрдХрд┐рди рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдФрд░ рдЬреАрдд рд▓реЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд░рдЪрдирд╛ рд╣рдореЗрдВ рд▓рд╛рдн рдирд╣реАрдВ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИред
рд╕рд╛рд░рд╛рдВрд╢,
рдЖрдк рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдпрджрд┐ рддрд░реНрдХ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдпрд╣ рдЙрдирд╕реЗ рдЕрд▓рдЧ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
"React рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ..." рд░рд┐рдПрдХреНрдЯ рдХрдВрдкреЛрдЬрд╝реЗрдмрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред "
рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╕рдВрджреЗрд╣ рдореЗрдВ рд╣реИрдВ, рддреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдбреЗрд╕реНрдХрдЯреЙрдк, рдЖрдИрдУрдПрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреНрдпреЛрдВ рд╣реИрдВред
[рей] рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ (!) рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ AngularJS рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕рдВрдпреЛрдЬрдХрддрд╛ рдФрд░ рдореЙрдбрд░реНрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рд╕рдВрд╢реЛрдзрдирдХреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддрд╛рдХрд┐ рд╡реЗ рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реЛрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЪреВрдВрдХрд┐ рд╡рд┐рддрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╡реЗрдм рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ, рдХреЙрдордирдЬ) рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЛ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╛ рдЖрдо рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
[рек] рдХреЗрд╡рд▓ рдЕрдЧрд░ рдХреЛрдгреАрдпрдЬреЗрдПрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
2 рддрд░рд╣ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реАрдХреНрдпрд╛ рджреЛ рдЪрд░ рдпрд╛ рдПрдХ рдЪрд░ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдЪрд░ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░рд╛ (рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг) рднреА рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред
[рел] рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдПрдХ рдЪрд░ рдХреЗ рдмреАрдЪ рдмрдВрдзрди рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЪрд░ рдФрд░ рдПрдХ рдЪрд░ рдХреЗ рдмреАрдЪ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЖрдХрд╕реНрдорд┐рдХ рд╕реНрдореГрддрд┐ рд▓реАрдХрдХреНрдпрд╛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХреНрд╕ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЙрддреНрддрд░ "рд╣рд╛рдВ" рдХрд╛ рдЕрд░реНрде рдпрд╣ рднреА рд╣реИ рдХрд┐ рд▓реАрдХ рд╡рд╛рд▓рд╛ рдХреЛрдб рдмрд┐рдирд╛ рд▓реАрдХ рдХреЗ рд╕рдорддреБрд▓реНрдп рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЕрдкрдирд╛ рдХреБрдЫ рд▓рд╛рд▓рд┐рддреНрдп рдЦреЛ рджреЗрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдиреЙрдХрдЖрдЙрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХреЙрдлрд╝реА рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рд▓рд┐рдЦрд╛, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд▓реАрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
рдиреЙрдХрдЖрдЙрдЯ рдкрд░ рдЖрд╡реЗрджрди рдФрд░
рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХреЙрдлрд╝реА рдкрд░ рдЖрд╡реЗрджрди ред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ,
Warp9 рдкрд░ рд▓реАрдХ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг
рдЖрд╡реЗрджрди ред
todomvcTodoMVC, js рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди gui рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд╣реИ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
[рем] рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХреЙрдлрд╝реА рдкрд░ рдЯреЛрдбреЛрдПрдорд╡реАрд╕реА рдХреЗрд╡рд▓ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреЛрдИ рдЯреИрдм рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ (рд╕рднреА, рд╕рдХреНрд░рд┐рдп, рдкреВрд░реНрдг) рдФрд░ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рд╣реИред
рдиреЗрддреГрддреНрд╡рд╣реАрдирдХреНрдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╢реБрджреНрдз рдЬреЗрдПрд╕рдХреНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рднрд╛рд╖рд╛ js рд╣реИред
[[] рд░рд┐рдПрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдЪрдЯреАрдПрдордПрд▓-рдорд╛рд░реНрдХрдЕрдк (рд╕реНрдХреИрд▓рд╛ рдореЗрдВ xml рд╕рдорд░реНрдерди рдХреЗ рд╕рдорд╛рди) рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреЛрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ js рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдорд┐рдХреНрд╕рдЕрдк рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд▓реЙрдЬрд┐рдХрдХреНрдпрд╛ рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдХреЛрдб рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рд╛рд░реНрдердХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рд╣рд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред
рд╡реНрдпрд╡рд╣рд╛рд░ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╡рд┐рднрд╛рдЬреНрдп рд╣реИрдВ: рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдХреЛрдб рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ / рдореЙрдбреНрдпреБрд▓реИрд░рд┐рдЯреА (рд╡рд┐рддрд░рдг) рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдХреА рд╕рдВрд░рдЪрдирд╛ / рдореЙрдбреНрдпреБрд▓реИрд░рд┐рдЯреА рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; рдФрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛрдЧреБрдиреА рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рд╣рдо рдирд┐рдпрдВрддреНрд░рдг (рдЕрдореВрд░реНрдд) рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░ (рдорд╛рд░реНрдХрдЕрдк + рддрд░реНрдХ) рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рд░рдЪрдирд╛ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдореМрдЬреВрджрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рд╕рднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рддрдХред рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рджреГрд╢реНрдпрддрд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛, рддрд░реНрдХ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдЖрдзреЗ рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ (n -> n / 2), рдЬрдмрдХрд┐ рдЕрдореВрд░реНрдд / рд░рдЪрдирд╛ рдЗрд╕реЗ n рд╕реЗ ln (n) рддрдХ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдордЬрд╝реЗрджрд╛рд░ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдорд┐рд╢реНрд░рдг рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд░рдЪрдирд╛ рдФрд░ рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
[ Direct
] рдЬрдм рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ рдЖрдкрдХреЛ рддрд░реНрдХ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рд╛рджрдЧреАрд▓рд╛рдпрдмреНрд░реЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗред
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░рд╛рдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред рд░рд┐рдПрдХреНрдЯрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рджреГрд╢реНрдп рдХреЛ
рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ:
рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: 2 (рд╕рдм рдХреБрдЫ рдПрдХ рдШрдЯрдХ рд╣реИ, рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ)ред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдРрдк рдмрдврд╝рддрд╛ рд╣реИ, рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ; рдмрд╕ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рдШрдЯрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред
- AngularJS: 6 (рдореЙрдбреНрдпреВрд▓, рдирд┐рдпрдВрддреНрд░рдХ, рдирд┐рд░реНрджреЗрд╢, рд╕реНрдХреЛрдк, рдЯреЗрдореНрдкреНрд▓реЗрдЯ, рд▓рд┐рдВрдХрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди)ред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдРрдк рдмрдврд╝рддрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдкрдХреЛ рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╕рдореГрджреНрдз рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕реВрдЪреАрд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдмрдирд╛рдирд╛ред рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
var a = ko.observable(0); var b = ko.compute(function() { return a() + 2 });
рдФрд░ рдЗрд╕ рддрд░рд╣ рддрд╛рдирд╛ 9 рдореЗрдВ:
var a = new Cell(0); var b = a.lift(function(a) { return a+2; });
рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдиреЙрдХрдЖрдЙрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХреЙрдлрд╝реА рдореЗрдВ рд╕рдорд░реНрдерди рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕реВрдЪреА рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдореЗрдВ рдкрдбрд╝реА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рдЬреЛ рд╕реВрдЪреА рдХреЗ рдЕрджреНрдпрддрди рд╣реЛрдиреЗ рдкрд░ рдЕрджреНрдпрддрди рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕реВрдЪреА рд╕реЗ рдХреБрд▓ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдЗрдХрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИред
Warp9 рдПрдХ рдЕрдореАрд░ рд╕реВрдЪреА рдкреНрд░рдмрдВрдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣реБрдб рдХреЗ рддрд╣рдд рдореБрд╢реНрдХрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдЧрдгрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
var list = new List([new Cell(0), new Cell(1), new Cell(2)]); var sum = list.reduce(0, function(a,b) { return a + b; });
рдЕрдм рдЬрдм рд╣рдордиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреАрд╕реА рдХреЛ рд▓реБрднрд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рдереА рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рддрд╛рдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред
Warp9
Warp9 рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рдЪрд▓реЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореЙрдбрд▓ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ DOM рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд░реВрдкрд╛рдВрддрд░рдг рдПрдХ рд╕рд╛рдзрд╛рд░рдг js рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ рд╣рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рд░рдЪрдирд╛ (рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛) рдФрд░ рд╡рд┐рддрд░рдг (рдЕрдкреЗрдХреНрд╖рд┐рдд) рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдзрди рдорд┐рд▓рддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ DOM рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореЙрдбрд▓ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг -
рдПрдкреНрд▓рд┐рдХреЗрд╢рди (
рд╕реНрд░реЛрдд ):
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЖрджрд┐рдо
рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде warp9 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ GUI рднрд╛рдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдЙрдирдХрд╛ рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рд╡рд░реНрдгрди рд╣реИред
рд╕рднреА рд╕реНрд▓рд╛рдЗрдб рдЙрджрд╛рд╣рд░рдг
рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд╕рджрд╕реНрдпрддрд╛рдПрдБ рдФрд░ рд▓реАрдХреНрд╕
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореЙрдбрд▓ (рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди, рдкреНрд░рдХрд╛рд╢рд┐рдд-рд╕рджрд╕реНрдпрддрд╛) рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рджреВрд╕рд░реЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдКрдБрдЪреА рдПрдбрд╝реА рдХреЗ рдЬреВрддреЗ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реИред рдпрджрд┐ рд╣рдо
рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХреА рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:
рдЗрд╕реЗ ( рдореЗрдореЛрд░реА рд▓реАрдХ ) рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ ... рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЛ рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рд╕рдВрджрд░реНрдн рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╢реНрд░реЛрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрдИ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдЙрдирдХрд╛
рдЙрд▓реНрд▓реЗрдЦ рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░
рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ,
рд▓реЗрдЦ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд
рд╣реИрдВ ред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ; рдпрд╣ рддрдереНрдп рдХрд┐ рдЗрди рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╣рд╛рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, warp9 рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рдХреЛрдб рдЬреЛ рд▓реАрдХ
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ
рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
var cell = new Cell(0); var lifted = cell.lift(function(x) { return x+1; });
рдпрд╣ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ рдХрд┐ рд╕реЗрд▓ рдореЗрдВ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬрдм рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд▓рд┐рдВрдХ рдЪрд▓реЗ рдЧрдП рд╣реИрдВ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ warp9 рдореЗрдВ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдЗрдП рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
var cell = ko.observable(0); var lifted = ko.computed(function(){ return cell() + 1; });
рдпрд╣рд╛рдВ рд╕реЗрд▓ рдореЗрдВ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рдХрд╛рдЙрдВрдЯрд░рд┐рдВрдЯрд┐рд╡ рд╣реИред рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдиреЗрдВ
var cell = new Cell(); var lifted = cell.lift(function(x) { return x+1; }); var dispose = lifted.onEvent(Cell.handler({ set: function(value) { console.info(тАЬset: тАЭ + value); }, unset: function() { console.info(тАЬunsetтАЭ); } })); cell.set(3); cell.set(5); cell.unset(); dispose(); cell.set(1);
рдЙрд╕рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛрдЧрд╛
unset > set: 4 > set: 6 > unset
рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ "рдкреНрд░рд╛рдХреГрддрд┐рдХ" рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реЗрд▓ рдореЗрдВ рдЙрдард╛рдиреЗ рдХреА рдХрдбрд╝реА рд╣реЛ, рдФрд░ рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд┐рд╕рд╛рд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдХреЛрдб рдЬреЛ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рд░рд┐рд╕рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ; рдЪреВрдВрдХрд┐
рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдЯреВрдЯреЗ рд╣реБрдП рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ ред
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╛рдардХ рдХреЛ "рд╕рдВрдХреЗрдд" рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
var cell = new Cell(); var lifted = cell.lift(function(x) { return x+1; }); var dispose = lifted.onEvent(Cell.handler({ set: function(value) { console.info(тАЬset: тАЭ + value); }, unset: function() { console.info(тАЬunsetтАЭ); } })); lifted.leak(); cell.set(3); cell.set(5); cell.unset(); dispose(); lifted.seal(); cell.set(1);
рд╣рдордиреЗ
lifted.leak()
рдФрд░
lifted.seal()
, рдХреЛрдб рд╕рдВрджрд┐рдЧреНрдз
lifted.seal()
рд▓рдЧрд╛ рдФрд░, рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
leak
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рд╣реИред рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░, рд╡реЗ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЙрдирдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╡рд╕реНрддреБ (рдЪрд░ рдпрд╛ рд╕реВрдЪреА) рдкрд░ рд░рд┐рд╕рд╛рд╡ рдХреЗ рдХрд╛рд░рдг, рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕реЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛ -
seal
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП
leak
рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдЦрддреНрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрджрд┐
leak
рдХреЛ n рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рддреЛ
seal
рдХреЛ рднреА n рд╕рдордп рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
seal
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдХрдо рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдЬрдм рдпрд╣ 0 рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛, рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╣реЛ рдЬрд╛рдПрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рддрд╛рдХрд┐ рдЖрдк рдпрд╣ рди рд╕реЛрдЪреЗрдВ рдХрд┐ рд╡рд╕реНрддреБ рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИ - рдЬреЛрдбрд╝рд┐рдпреЛрдВ
seal
рдХреЙрд▓
leak
рдФрд░
seal
рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ - рд╣рдо рдбреАрдПрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИрдВред
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛ рдХрд┐ рдЬрдм рдПрдХ рдЪрд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реБрдП рд╣рдо рд╕реЗрдЯ рдФрд░ рдЕрдирд╕реЗрдЯ рдШрдЯрдирд╛рдУрдВ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреА рдЕрд▓рдЧ рд╕реВрдЪреА рд╣реИ: рдбреЗрдЯрд╛, рдЬреЛрдбрд╝реЗрдВ, рдирд┐рдХрд╛рд▓реЗрдВ
var list = new List(); list.leak(); list.onEvent(List.handler({ data: function(items) { // , items - // ; , // " , , " // items - { key: key, value: value } value - // , key - (id), // }, add: function(item) { // , , item // {key: key, value:value}, value - , key - }, remove: function(key) { // , key - } }));
рдЕрдВрдХрди
рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдирд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдирд┐рд╕ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ "рд╣реИрд▓реЛ, рдбреЗрдирд┐рд╕" рджреЗрдЦрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдмрдЯрди рднреА рдЬреЛрдбрд╝рд╛ рдЬреЛ рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред
рд▓рд╛рдЗрд╡ рдЖрд╡реЗрджрди
рд▓рд┐рдВрдХ (рдЗрд╕рдХреЗ
рд╕реНрд░реЛрдд ) рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, NAME рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░) рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдлрд┐рд░ рдЖрдИрдбреА "рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░" рдХреЗ рд╕рд╛рде div рдХреЗ рдЕрдВрджрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рд╕реНрд╡рдпрдВ рдПрд╕-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рд╕реНрдк рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рд╣рдо рдХреЛрд╖реНрдардХ рдХреЗ рдмрдЬрд╛рдп рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдЙрдирдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЗрдб-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди ("z" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ "[" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ) "(") рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
Z- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡реНрдпрд╛рдХрд░рдг рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
ClearChildren = '' ['' TAG_NAME '' '' (',' ATTR)? (',' рдмрдЪреНрдЪрд╛) * ']'
implicitChildren = '' ['' TAG_NAME '' '' (',' ATTR)? (рдиреЛрдб рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓-рд╕реВрдЪреА) "]
рдмрдЪреНрдЪрд╛ = рдиреЛрдб | '' '' STRING '' '' | INT |
(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓-рдЪрд░-рдиреЛрдб рдХрд╛) |
(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓-рдЪрд░-STRING рдХреА) |
(INT рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓-рдЪрд░)
рдиреЛрдб = рд╕реНрдкрд╖реНрдЯрд╡рд╛рджреА | implicitChildren
рдЬрд╣рд╛рдВ TAG_NAME "html" рдЯреИрдЧ рдХрд╛ рдирд╛рдо рд╣реИ (рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреИрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), STRING рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, INT рдХреЛрдИ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, ATTR рдЯреИрдЧ, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рд╣реИред
ATTR рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ DOM рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рддрддреНрд╡ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореВрд▓реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЫреЛрдбрд╝рдХрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдИрдбреА - рдпрд╣ рдПрдХ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдПрдХ рдФрд░ рдЕрдкрд╡рд╛рдж рдЧреБрдгреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ "!" - рд╡реЗ рдХрд╛рд░реНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рддрддреНрд╡ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдмрдВрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ:
["input-text", { "css/background": name.isSet().when(false, "red") }, name]
рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:
["input-text", { "css": { "background": name.isSet().when(false, "red") } }, name]
рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ - рдХрд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдФрд░ рдХрд╕реНрдЯрдо рдЗрд╡реЗрдВрдЯ, рд╡реЗ рдирд╛рдо рдореЗрдВ ":" рд╣реИрдВред рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреБрдЫ рдХрд╕реНрдЯрдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡реЗ DOM рддрддреНрд╡ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдпрд╛ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реИрдВред
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рдКрдкрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЕрдм рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рд╕реНрдЯреЗрди - рдЗрд╕ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдЬрд┐рддрдиреЗ рднреА рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд╣реИрдВ, рдЙрд╕рдореЗрдВ рддрддреНрд╡ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВ рдХрд╣рддрд╛ рдерд╛ рдХрд┐ warp9 рд░рдЪрдирд╛ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рддрдХрдиреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВред
function NAMES(names){ return ["div", names.lift(NAME)]; }
рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
warp9.ui.renderer.render(placeholder, NAME(new Cell("Denis")));
рдкрд░
var names = new List(); warp9.ui.renderer.render(placeholder, NAMES(names)); names.add(new Cell("Denis")); names.add(new Cell("Lisa"));
рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд░рдЪрдирд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрд╛рдирд╛ 9 рдЙрддреНрдХреГрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм warp9 рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреА рдПрдХ рднреА рдкрдВрдХреНрддрд┐ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж warp9 рдХреА рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдЦреЛрд▓реА рдЧрдИ рдереАред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ warp9 рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЙрдбреНрдпреВрд▓рд░ рд╕рдорд░реНрдерди; рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдПрдордбреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдПрдПрдордбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ:
рдЖрд╡реЗрджрди рд╕реНрд╡рдпрдВ рдФрд░ рдЗрд╕рдХреЗ
рд╕реНрд░реЛрдд ред
рдХрд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
рдЬрдмрдХрд┐ рдХрд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рддрдВрддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдФрд░ рддрд╛рдирд╛ 9 рдХрдИ рд╣рд╛рд░реНрдбрдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХреБрдВрдЬреА: рджрд░реНрдЬ рдХрд░реЗрдВрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЗрдирдкреБрдЯ-рдЯреЗрдХреНрд╕реНрдЯ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рддрддреНрд╡ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИред
warp9: рднреВрдорд┐рдХрд╛ рдФрд░
! warp9: рдмрджрд▓ рдЧрдпрд╛рддрддреНрд╡ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрдирдкреБрдЯ-рдЬрд╛рдВрдЪ рдЯреИрдЧ рдХреЗ рд▓рд┐рдПред Warp9: рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдШрдЯрдирд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рддрд░реНрдХ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп (рд╕рд╣реА / рдЧрд▓рдд) рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ warp9: рднреВрдорд┐рдХрд╛ "рджреГрд╢реНрдп" рд╣реИ, рддреЛ рдЬрдм рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рддрддреНрд╡ рд╕рдВрдЪрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдп рд╕реНрд╡рдпрдВ рдЪрд░ рдХреЗ рдмрд╛рдж рдмрджрд▓рддрд╛ рд╣реИ)ред
warp9: рдбреНрд░рд╛рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ; рдЗрд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрддреНрд╡ рд╕реНрдХреНрд░реАрди рдкрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
TodoMVC
рдпрджрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рд╕рдордЭрддреЗ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрд╛рдирд╛-рдмрд╛рдирд╛ рдкрд░ рдЯреВрдбреЛ рд╡реАрд╡реАрд╕реА
рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬреНрдЮрд╛рди рд╣реИ, рд╡реИрд╕реЗ, рдПрдХ рд▓рд╛рдЗрд╡
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм Warp9 рдХрд╛ рдХреЛрдИ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ:
- рдпреВрдЖрдИ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧрддрддрд╛
- рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА
- рд▓реАрдХ рдореЗрдореЛрд░реА рд▓реАрдХреНрд╕
рдпрд╣ рд╕реЗрдЯ рдореБрдЭреЗ рдХрд╛рдлреА рдЕрдиреЛрдЦрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдп рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред