рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдбреБрдмрдХреА рд▓рдЧрд╛рдирд╛ред рдЯреЛрдбреЛрдореЗрд╡реАрд╕реА рд▓реЗрдЦрдиред рднрд╛рдЧ 1

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

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

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд╡рд┐рд╡рд░рдг рдХреА рдЦреЛрдЬ рдФрд░ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдЯ www.todobackend.com рд╕реЗ рддреИрдпрд╛рд░ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдПрдХ рдорд╛рдирдХ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рд▓реЗ рд▓реЗрдВрдЧреЗред

рдбреАрдПрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреЛрдИ npm install рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛, рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдФрд░ рдЖрдИрдЯреА рд╕рдлрд▓рддрд╛ рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкрд░реНрдпрд╛рдкреНрдд рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ред XHR рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реНрдпрд╛рдкреНрдд, рдЬреИрд╕реЗ рдХрд┐ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди ред рд╣рдорд╛рд░реЗ рдкреВрд░реЗ рджреГрд╢реНрдп рдореЗрдВ рдПрдХ .html-рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА (рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдбреИрдк-рдЗрдВрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдорд╛рдирдХ TodoMVC CSS рдлрд╝рд╛рдЗрд▓ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП)

рддреЛ, рдЦрд░реЛрдВрдЪ рд╕реЗред

1. .html рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ


 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Todo -- dap sample</title> <link rel="stylesheet" href="https://www.todobackend.com/client/css/vendor/todomvc-common.css"/> <script src="https://dap.js.org/0.4.js"></script> </head> <body> <script> //   dap </script> </body> </html> 

рд╕рд╛рдорд╛рдиреНрдп HTML рддреИрдпрд╛рд░реА рдЬрд┐рд╕рдореЗрдВ рд╣рдо CSS-file рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ рд╕рд╛рдЗрдЯ www.todobackend.com рдФрд░ dap-engine рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рд╕рд╛рдЗрдЯ dap.js.org рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреЛрдИ рднреА рдХреГрдкрд╛рд▓реБрддрд╛ рдХрдо рдирд╣реАрдВ рд╣реИред

2. рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдХреА DOM рд╕рдВрд░рдЪрдирд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ


рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдорд╛рдирдХ CSS рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди DOM рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ, Ctr + Shift + I рджрдмрд╛рдПрдВ, рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдЯреИрдм рдЪреБрдиреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рдПрд▓реАрдореЗрдВрдЯ section id="todo-app">



рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдЗрд╕ рд╕рдмрдЯреНрд░реА рдХреЛ рдЦреЛрд▓рдХрд░ рд╣рдо рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╣рдорд╛рд░реА .html рдлрд╛рдЗрд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдмрд╕ рдПрдХ рддреНрд╡рд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдХреЗрдЪрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд┐рд░реНрдл 'рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреНрд╕' рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдХреЛрд╖реНрдардХ рдореЗрдВред рдпрджрд┐ рдХреЛрдИ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдо рдЦрд╛рд▓реА рдХреЛрд╖реНрдардХ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рдВрддреБрд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВред

 //   dap '#todoapp'( '#header'( 'H1'() 'INPUT#new-todo placeholder="What needs to be done?" autofocus'() ) '#main'( '#toggle-all type=checkbox'() 'UL#todo-list'( 'LI'( 'INPUT.toggle type=checkbox'() 'LABEL'() 'BUTTON.destroy'() ) ) ) '#footer'( '#todo-count'() 'UL#filters'( 'LI'() ) '#clear-completed'() ) ) 

рдиреЛрдЯ: рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╡реЗ LI рддрддреНрд╡ рд╣реИрдВ) рд╣рдо рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдореВрд▓ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реЛрдВ; рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпреЗ рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рд╕реЗ рдПрд░реЗрдЬрд╝ рд╣реИрдВред

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

3. рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдбреАрдПрдкреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ


рдХреЛрдб рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрд╖реНрдардХ рд╕реЗ рд╣рдореЗрдВ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, dap рдЗрдВрдЬрди рд╕реАрдзреЗ рдХрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ String.prototype рдореЗрдВ String.prototype (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдирдХ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЖрдкрдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ ayahay рд╣реИ, рд▓реЗрдХрд┐рди ... рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдкрд╛рд╕ рд╣реЛ рдЧрдП рд╣реИрдВ), рдЬреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ dap рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред -shablonред рдРрд╕реА рд╣реА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ .d(rule, ...children) ред рдкрд╣рд▓рд╛ рддрд░реНрдХ рдЬреЛ рд▓реЗрддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдкреАрдврд╝реА рдХрд╛ рдирд┐рдпрдо ( рдбреА-рд░реВрд▓ ) рд╣реИ, рдФрд░ рдмрд╛рдХреА рддрд░реНрдХ рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪрд┐рд▓реНрдб рд╣реИрдВред

рдЗрд╕ рдирдП рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЕрдкрдирд╛ рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдУрдкрдирд┐рдВрдЧ рдмреНрд░реЗрд╕ рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреБрдХреНрд░рдо .d("" , рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдУрдкрдирд┐рдВрдЧ рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╣реЛред рдЬреАрд╡рди рд╣реИрдХ: рдЖрдк рдСрдЯреЛ-рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 '#todoapp'.d("" ,'#header'.d("" ,'H1'.d("") ,'INPUT#new-todo placeholder="What needs to be done?" autofocus'.d("") ) ,'#main'.d("" ,'#toggle-all type=checkbox'.d("") ,'UL#todo-list'.d("" ,'LI'.d("" ,'INPUT.toggle type=checkbox'.d("") ,'LABEL'.d("") ,'BUTTON.destroy'.d("") ) ) ) ,'#footer'.d("" ,'#todo-count'.d("") ,'UL#filters'.d("" ,'LI'.d("") ) ,'#clear-completed'.d("") ) ) 

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

рддреЛ, рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ .html рдлрд╝рд╛рдЗрд▓ рд╣реИ:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Todo -- dap sample</title> <link rel="stylesheet" href="https://www.todobackend.com/client/css/vendor/todomvc-common.css"/> <script src="https://dap.js.org/0.4.js"></script> </head> <body> <script> '#todoapp'.d("" ,'#header'.d("" ,'H1'.d("") ,'INPUT#new-todo placeholder="What needs to be done?" autofocus'.d("") ) ,'#main'.d("" ,'#toggle-all type=checkbox'.d("") ,'UL#todo-list'.d("" ,'LI'.d("" ,'INPUT.toggle type=checkbox'.d("") ,'LABEL'.d("") ,'BUTTON.destroy'.d("") ) ) ) ,'#footer'.d("" ,'#todo-count'.d("") ,'UL#filters'.d("" ,'LI'.d("") ) ,'#clear-completed'.d("") ) ) .RENDER() //   dap   </script> </body> </html> 

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

4. рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


рд╣рдо рдореВрд▓ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЯреВрд▓ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдЦреЛрд▓реЗрдВ, рдПрдХреНрд╕рдПрдЪрдЖрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╣рд╛рдБ рд╕реЗ рдФрд░ рдХрд┐рд╕ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред





рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИред рдЯреВ-рдбреВ рд╕реВрдЪреА рд╕реАрдзреЗ todo-backend-express.herokuapp.com рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рд╕рд░рдгреА рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реА рдЬрд╛рддреА рд╣реИред рдЕрджреНрднреБрддред

рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, dap рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдирд╡рд░реНрдЯрд░ рд╣реЛрддрд╛ рд╣реИ :query рдЬреЛ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ URL рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдореЗрдВ "рд░реВрдкрд╛рдВрддрд░рд┐рдд" рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЦреБрдж рдХреЛ рд╕реАрдзреЗ рдирд┐рдпрдо рдореЗрдВ URL рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдирд┐рд░рдВрддрд░ todos рд╕рд╛рде рдирд╛рдорд┐рдд рдХрд░реЗрдВрдЧреЗ; рддрдм рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛ рдорд╛рдЗрдирд┐рдВрдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 todos:query 

рдФрд░ рд╢рдмреНрджрдХреЛрд╖ рдореЗрдВ рдЦреБрдж рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП - .DICT рд╕реЗрдХреНрд╢рди рдореЗрдВ .RENDER() :

 '#todoapp'.d("" ... ) .DICT({ todos : "https://todo-backend-express.herokuapp.com/" }) .RENDER() 

todos рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рд╕реЗ рдПрдХ рдЯреВ-рдбреВ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╣рдо .title рдлрд╝реАрд▓реНрдб рд╕реЗ рдирд╛рдо рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ LABEL рддрддреНрд╡ рдореЗрдВ .completed , рдФрд░ .completed рдлрд╝реАрд▓реНрдб рд╕реЗ .completed "рдкреВрд░реНрдгрддрд╛" рдХрд╛ рдЪрд┐рд╣реНрди рд▓реЗрддреЗ рд╣реИрдВ - рдФрд░ checked рддрддреНрд╡ рдХреА checked рдХреА checked рд╕рдВрдкрддреНрддрд┐ INPUT.toggle ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  ,'UL#todo-list'.d("*@ todos:query" //  *       ,'LI'.d("" ,'INPUT.toggle type=checkbox'.d("#.checked=.completed") // #  " " ,'LABEL'.d("! .title") //  !      ,'BUTTON.destroy'.d("") ) ) 

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



Http - рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рдиреАрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдкреЗрдЬ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдбреАрдПрдкреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореЗрд░реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрда рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВ (рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ - рдХреНрд░реЛрдо рдореЗрдВ рдпрд╣ Ctrl + U рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рдЗрд╕рд▓рд┐рдП, рд╣рдо http: // рдкрд░ рдЕрдкрдиреЗ рдкреЗрдЬ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдЖ рд░рд╣рд╛ рд╣реИ, рд╕реВрдЪреА рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА * рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ ! , рдХрдирд╡рд░реНрдЯрд░ :query , рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рд░рдгреА рддрддреНрд╡ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪред рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВред рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдЖрдкрдХреЛ рдЕрдкрдардиреАрдп рд▓рдЧрддрд╛ рд╣реИ?

5. рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝реЗрдВ


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

LI рддрддреНрд╡ рдореЗрдВ "рдкреВрд░реНрдгрддрд╛" рдХреА рд╕реНрдерд┐рддрд┐ рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕рдХреЗ $completed рдирд┐рдпрдо рдореЗрдВ $completed рд░рд╛рдЬреНрдп рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред INPUT.toggle , рдЬреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдо ( ui-rule ) рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ, рдЬреЛ $completed рдЪрд░ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдзреНрд╡рдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ ("daw рдЪрд╛рд▓реВ рд╣реИ")ред $completed рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ $completed LI рддрддреНрд╡ рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ "рдкреВрд░реНрдг" рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛ред

  ,'UL#todo-list'.d("*@ todos:query" ,'LI'.d("$completed=.completed"//  ,    .completed ,'INPUT.toggle type=checkbox' .d("#.checked=.completed") //       .ui("$completed=#.checked") //    $completed ,'LABEL'.d("! .title") ,'BUTTON.destroy'.d("") ) .a("!? $completed") //     $completed,    css- completed ) 

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

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

  ,'LI'.d("$completed=.completed; a!" //      $completed    a- 

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ ред рдареАрдХ рд╣реИред $completed рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдкрддрд╛ рд▓рдЧрд╛ред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреВрдЯ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдмрд╛рдж рдореЗрдВ рдореИрдиреБрдЕрд▓ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкреВрд░реНрдг рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

6. рдХреЗрд╕ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рд╕рдВрдкрд╛рджрди


рд╡рд╛рдкрд╕ рдореВрд▓ рдореЗрдВ ред рдорд╛рдорд▓реЗ рдХреЗ рдирд╛рдо рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ, рд╕рдВрдкрд╛рджрди рдореЛрдб рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдирд╛рдо рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ "рд╡реНрдпреВ" рд╡реНрдпреВ рдореЛрдб рдЯреЗрдореНрдкрд▓реЗрдЯ (рдПрдХ рдбреЙрд╡, рдПрдХ рд╢реАрд░реНрд╖рдХ рдФрд░ рдПрдХ рдбрд┐рд▓реАрдЯ рдмрдЯрди рдХреЗ рд╕рд╛рде) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ INPUT class="edit" рдПрд▓рд┐рдореЗрдВрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВрдЧреЗ - рд╣рдо рдХреЗрд╡рд▓ LABEL рддрддреНрд╡ рдХреЛ LABEL , рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рджреЛ рддрддреНрд╡ рд╣рдорд╛рд░реЗ рд╕рдВрдкрд╛рджрди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ LABEL рддрддреНрд╡ рдореЗрдВ view рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВред

"рд╕рдВрдкрд╛рджрди" рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП, LI рддрддреНрд╡ рдореЗрдВ $editing рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ (рд░рд╛рдЬреНрдп) рд░реАрд╕реЗрдЯ рд╣реИ, LABEL рддрддреНрд╡ рдкрд░ dblclick рджреНрд╡рд╛рд░рд╛ dblclick рд╣реЛрддрд╛ рд╣реИ, рдФрд░ INPUT.edit рддрддреНрд╡ рдлреЛрдХрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

  ,'LI'.d("$completed=.completed $editing=; a!" //       ,'INPUT.toggle type=checkbox' .d("#.checked=.completed") .ui("$completed=#.checked") ,'LABEL.view' .d("? $editing:!; ! .title") //  $editing ,     .e("dblclick","$editing=`yes") //  dblclick  $editing ,'INPUT.edit' .d("? $editing; !! .title@value") //  $editing  .ui(".title=#.value") //  .title   change (ui     INPUT) .e("blur","$editing=") //  $editing   blur ,'BUTTON.destroy'.d("") ).a("!? $completed $editing") //   $completed  $editing  css-  'LI' 

рдЕрдм рд╣рдо рдорд╛рдорд▓реЛрдВ рдХреЗ рдирд╛рдо рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

7. рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛


рдареАрдХ рд╣реИ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд░реНрд╡рд░ рдореЗрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓ рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ:



рдкрд░рд┐рд╡рд░реНрддрди http://todo-backend-express.herokuapp.com/28185 рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд URL рдХреЗ рд╕рд╛рде PATCH рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред рдпрд╣ URL рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ .url рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╕рд░реНрд╡рд░ рдкрд░ рдХреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде .url рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдПрдХ PATCH рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

  ,'INPUT.edit' .d("? $editing; !! .title@value") .ui(".title=#.value; (@method`PATCH .url (@Content-type`application/json)@headers (.title):json.encode@body):query") .e("blur","$editing=") 

рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рд╣реА рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ :query , рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВред рдЬрдм :query рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ URL рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ GET рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ :query рдХреЛ рдХреЛрдИ рдЬрдЯрд┐рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ .method , .url , .headers рдФрд░ .body , рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ, рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рджред .title рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕ рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде рдПрдХ .title рдЕрдиреБрд░реЛрдз .title

рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИред рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ .url рдлрд╝реАрд▓реНрдб рдорд┐рд▓рддрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: http://todo-backend-express.herokuapp.com/28185 , рдЕрд░реНрдерд╛рдд, http: // рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЗрд╕рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ http: // рдХреЗ рд▓рд┐рдП рднреА рдЦреБрд▓рд╛ рд╣реИред рддрдм рд╕рдм рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреНрд▓рд╛рдЗрдВрдЯ https: // рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ http-рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ https-source рд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдмрд╕ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк .url рд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреБрд░реЛрдз рдкреЗрдЬ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдЧрд╛ред рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ: рдЙрдкрдпреБрдХреНрдд рдХрдирд╡рд░реНрдЯрд░ - dehttp , рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ .url рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдХрд╕реНрдЯрдо рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ (рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛) .FUNC рдЕрдиреБрднрд╛рдЧ рдореЗрдВ .FUNC рд╣реИрдВ:

  .ui(".title=#.value; (@method`PATCH .url:dehttp (@Content-type`application/json)@headers (.title):json.encode@body):query") ... .FUNC({ convert:{ //  -         dehhtp: url=>url.replace(/^https?\:/,'')//    URL } }) 

рд╣реЗрдбрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рд░рдЦрдирд╛ рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:

  .ui(".title=#.value; (@method`PATCH .url:dehttp headers (.title):json.encode@body):query") ... .DICT({ todos : "//todo-backend-express.herokuapp.com/", headers: {"Content-type":"application/json"} }) 

рдЦреИрд░, рдкреВрд░реНрдг рдлреЗрдВрдЧ рд╢реБрдИ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдирд╡рд░реНрдЯрд░ рдХреА рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ :query - Content-type:application/json рд╣реЗрдбрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ json рдореЗрдВ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдирддреАрдЬрддрди, рдирд┐рдпрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

  .ui(".title=#.value; (@method`PATCH .url:dehttp headers (.title)):query") 

рддреЛ, рджреЗрдЦреЛ ред рдареАрдХ рд╣реИ, рдорд╛рдорд▓реЗ рдХреЗ рдирд╛рдо рдЕрдм рди рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рдмрджрд▓рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди! рди рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ - completed ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдк INPUT.toggle рддрддреНрд╡ рдореЗрдВ рд╡рд╣реА PATCH рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, (.completed) рдмрдЬрд╛рдп (.completed) рднреЗрдЬреЗрдВред

  ,'INPUT.toggle type=checkbox' .d("#.checked=.completed") .ui("$completed=#.checked; (@method`PATCH .url:dehttp headers (.completed:?)):query") 

рдФрд░ рдЖрдк рдЗрд╕ рдкрд╛рде рдЕрдиреБрд░реЛрдз рдХреЛ "рдХреЛрд╖реНрдардХ рд╕реЗ рдмрд╛рд╣рд░" рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

  ,'LI'.d("$completed=.completed $editing= $patch=; a!" // $patch - ""   ,'INPUT.toggle type=checkbox' .d("#.checked=.completed") .ui("$patch=($completed=#.checked)") //   $patch  completed ,'LABEL.view' .d("? $editing:!; ! .title") .e("dblclick","$editing=`yes") ,'INPUT.edit' .d("? $editing; !! .title@value") .ui("$patch=(.title=#.value)") //   $patch  title .e("blur","$editing=") ,'BUTTON.destroy'.d("") ) .a("!? $completed $editing") //  $patch  ,   ,   .u("? $patch; (@method`PATCH .url:dehttp headers $patch@):query $patch=") 

рдпреЗ рд░рд╣реА рдмрд╛рддред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдо "рдЕрдк-рдирд┐рдпрдореЛрдВ" рдХреЗ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ "рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ" рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рдВрд╢рдЬ рд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рддрдХ, рд╕реНрд╡рдпрдВ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдпрд╣ рдХреНрд░рдо рдмрд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ DOM рдореЗрдВ рдкреЙрдк-рдЕрдк рдЗрд╡реЗрдВрдЯреНрд╕ рдЬреИрд╕рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдИ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХреБрдЫ рдЕрдВрд╢реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ : рдЕрдм рд╕рд░реНрд╡рд░ рдореЗрдВ рдирд╛рдо рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рджреЛрдиреЛрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рдЫрд╛рдирдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕ рдмреАрдЪ, рдЖрдк dap.js.org/docs рдкрд░ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдФрд░ рдбреИрдк рдХреЛрдб рдХреЗ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

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


All Articles