Warp9 рдПрдХ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдЗрд╕ рдмрд╛рд░ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд▓реАрдХ рдореБрдХреНрдд рд╣реИ

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



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

AngularJSрдкреАрдЯрдирд╛рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрд▓реНрдордЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕, рдмреЗрдХрдиReactiveCoffeeWarp9
рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдзрд╛рд░рд┐рдд рд╣реИрд╣рд╛рдВ / рдирд╣реАрдВ [1]рд╣рд╛рдВрдирд╣реАрдВрдирд╣реАрдВрдирд╣реАрдВрдирд╣реАрдВ
рд╕рдВрдпреЛрдЬрдХрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИрдирд╣реАрдВ [2] [рей]рдирд╣реАрдВ [2]рд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВ
рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рд╕рдВрд╢реЛрдзрдирд╣рд╛рдВ / рдирд╣реАрдВ [4]рдирд╣реАрдВрд╣рд╛рдВрд╢рд╛рдпрджрд╣рд╛рдВрд╣рд╛рдВ
2 рддрд░рд╣ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реАрд╣рд╛рдБ / рдирд╣реАрдВ [рел]рд╣рд╛рдВрдирд╣реАрдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВ
рдЖрдХрд╕реНрдорд┐рдХ рд╕реНрдореГрддрд┐ рд▓реАрдХрдирд╣реАрдВрд╣рд╛рдВрдирд╣реАрдВрдирд╣реАрдВрдирд╣реАрдВрд╣рд╛рдВрдирд╣реАрдВ
todomvcрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрдирд╣реАрдВрд╢рд╛рдпрджрд╣рд╛рдБ / рдирд╣реАрдВ [рем]рд╣рд╛рдВ
рдиреЗрддреГрддреНрд╡рд╣реАрдирдирд╣реАрдВрд╣рд╛рдВрдирд╣реАрдВрдирд╣реАрдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВ
рд╢реБрджреНрдз рдЬреЗрдПрд╕рд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдБ [7]рдирд╣реАрдВрд╣рд╛рдВрдирд╣реАрдВрд╣рд╛рдВ
рдорд┐рдХреНрд╕рдЕрдк рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд▓реЙрдЬрд┐рдХрд╣рд╛рдВ / рдирд╣реАрдВ [8]рдирд╣реАрдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВ
рд╕рд╛рджрдЧреАрдирд╣реАрдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВрд╣рд╛рдВ
рд╕рдореГрджреНрдз рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕реВрдЪреАрдирд╣реАрдВрдирд╣реАрдВрд╣рд╛рдВрдирд╣реАрдВрдирд╣реАрдВрд╣рд╛рдВ
рдЪреВрдВрдХрд┐ RxJS рдФрд░ Bacon.js рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ, рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╢реНрди рдмрд╕ рдЙрди рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ GUI рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдирд╛ рдереЛрдбрд╝рд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмрдбрд╝рд╛ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдЧрд╛ред

рдХрд┐рдВрд╡рджрдВрддреА рдФрд░ рдЯрд┐рдкреНрдкрдгреА


рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдзрд╛рд░рд┐рдд рд╣реИ
рдХреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрдХрдиреАрдХ рд╣реИ?

[рез] рдХрдИ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдпреЛрдЬрдХрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдХреНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ (рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЬреАрдд рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЪреЗрддрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

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

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

[рей] рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ (!) рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ AngularJS рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕рдВрдпреЛрдЬрдХрддрд╛ рдФрд░ рдореЙрдбрд░реНрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

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

[рек] рдХреЗрд╡рд▓ рдЕрдЧрд░ рдХреЛрдгреАрдпрдЬреЗрдПрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

2 рддрд░рд╣ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА
рдХреНрдпрд╛ рджреЛ рдЪрд░ рдпрд╛ рдПрдХ рдЪрд░ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдЪрд░ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░рд╛ (рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг) рднреА рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

[рел] рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдПрдХ рдЪрд░ рдХреЗ рдмреАрдЪ рдмрдВрдзрди рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЪрд░ рдФрд░ рдПрдХ рдЪрд░ рдХреЗ рдмреАрдЪ рдЕрд╕рдВрднрд╡ рд╣реИред

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

рдореИрдВрдиреЗ рдиреЙрдХрдЖрдЙрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХреЙрдлрд╝реА рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рд▓рд┐рдЦрд╛, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд▓реАрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдиреЙрдХрдЖрдЙрдЯ рдкрд░ рдЖрд╡реЗрджрди рдФрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдХреЙрдлрд╝реА рдкрд░ рдЖрд╡реЗрджрди ред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, Warp9 рдкрд░ рд▓реАрдХ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдЖрд╡реЗрджрди ред

todomvc
TodoMVC, 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 рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореЙрдбрд▓ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг - рдПрдкреНрд▓рд┐рдХреЗрд╢рди ( рд╕реНрд░реЛрдд ):

 //    (   ) var model = new List(); //     DOM var dom = TRANSFORM(model); //   DOM warp9.ui.renderer.render(placeholder, dom); //   //      model.add("React.js"); model.add("Warp9"); function TRANSFORM(model) { var hasItems = model.count().when(function(count) { return count>0 }, true); return hasItems.when(true, ["div", ["div", "Reactive libraries:"], ["div", {"css/margin-left": "10px"}, model.lift(function(item){ return ["div", item] })] ]); } 

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЖрджрд┐рдо


рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде 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 -   } })); 

рдЕрдВрдХрди


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

рд▓рд╛рдЗрд╡ рдЖрд╡реЗрджрди рд▓рд┐рдВрдХ (рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд ) рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

 //<html> //<body> // <div id="placeholder"></div> //</body> //<script src="../../../lib/warp9/warp9.js"></script> //<script language="javascript" type="text/javascript"> var Cell = warp9.reactive.Cell; warp9.ui.renderer.render(placeholder, NAME(new Cell("Denis"))); function NAME(name) { var hello = name.when( function(name) { return name.length > 0; }, function(name) { return "Hello, " + name + "!"; } ); return ["div", ["div", ["input-text", { "css/background": hello.isSet().when(false, "red") }, name], ["button", {"!click": function() { name.unset(); }}, "clear"]], hello.lift(function(hello) { return ["div", hello]; }) ]; } //</script> //</html> 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 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 рдХрд╛ рдХреЛрдИ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ:рдпрд╣ рд╕реЗрдЯ рдореБрдЭреЗ рдХрд╛рдлреА рдЕрдиреЛрдЦрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдп рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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


All Articles