рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб JavaScript Node.js 17.0 рд░рд┐рд▓реАрдЬрд╝

Node.js 17.0, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Node.js 17.0 рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд╣рд╛рдпрддрд╛ рд╢рд╛рдЦрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреВрди 2022 рддрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд░рд╣реЗрдВрдЧреЗред рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд┐рдиреЛрдВ рдореЗрдВ, Node.js 16 рд╢рд╛рдЦрд╛ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ LTS рдХрд╛ рджрд░реНрдЬрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкреНрд░реИрд▓ 2024 рддрдХ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Node.js 14.0 рдХреА рдкрд┐рдЫрд▓реА LTS рд╢рд╛рдЦрд╛ рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдЕрдкреНрд░реИрд▓ 2023 рддрдХ рдЪрд▓реЗрдЧрд╛, рдФрд░ рдЕрдВрддрд┐рдо LTS рд╢рд╛рдЦрд╛ 12.0 рд╕реЗ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдЕрдкреНрд░реИрд▓ 2022 рддрдХ рдЪрд▓реЗрдЧрд╛ред

рдореБрдЦреНрдп рд╕реБрдзрд╛рд░:

  • V8 рдЗрдВрдЬрди рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 9.5 рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдкреНрд░реЙрдорд┐рд╕ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреБрдирд┐рдпрд╛рджреА рдПрдкреАрдЖрдИ рдХреЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рд░реА рд░рд╣рд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдЯрд╛рдЗрдорд░ рдкреНрд░реЙрдорд┐рд╕ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЙрдорд┐рд╕ рдПрдкреАрдЖрдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдиреЛрдб.рдЬреЗрдПрд╕ 17.0 рд░реАрдбрд▓рд╛рдЗрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрд▓рд╛рдЗрди рдкреНрд░реЙрдорд┐рд╕ рдПрдкреАрдЖрдИ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред 'рдиреЛрдб:рд░реАрдбрд▓рд╛рдЗрди/рд╡рд╛рджреЗ' рд╕реЗ рд░реАрдбрд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ * рдЖрдпрд╛рдд рдХрд░реЗрдВ; 'рдкреНрд░реЛрд╕реЗрд╕' рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ { рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ stdin, рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ stdout }; рд╕реНрдерд┐рд░рд╛рдВрдХ рдЖрд░рдПрд▓ = readline.createInterface({ рдЗрдирдкреБрдЯ, рдЖрдЙрдЯрдкреБрдЯ }); рд╕реНрдерд┐рд░рд╛рдВрдХ рдЙрддреНрддрд░ = рдкреНрд░рддреАрдХреНрд╖рд╛ rl.рдкреНрд░рд╢реНрди ('рдЖрдк Node.js рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?'); рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ('рдЖрдкрдХреА рдмрд╣реБрдореВрд▓реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж: ${answer}'); rl.рдмрдВрдж рдХрд░реЗрдВ();
  • рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 3.0 рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдПрдХ рдХреНрд╡рд┐рдХреНрдЯрд▓реНрд╕/рдУрдкрдирдПрд╕рдПрд▓ рдлреЛрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
  • Node.js рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо Node.js (CVE-2021-22959, CVE-2021-22960) рдХреА рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рджреЛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдЙрдиреНрдореВрд▓рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ "HTTP рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╕реНрдордЧрд▓рд┐рдВрдЧ" (HRS) рд╣рдорд▓реЛрдВ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рдереНрд░реЗрдб рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рддреНрд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд╡рд┐рд╡рд░рдг рдмрд╛рдж рдореЗрдВ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдПрдВ HTTP рд╣реЗрдбрд░ рдирд╛рдо рдФрд░ рдХреЛрд▓рди рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдЧрд▓рдд рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреИрд░рд┐рдЬ рд░рд┐рдЯрд░реНрди рдФрд░ рд▓рд╛рдЗрди рдлрд╝реАрдб рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИрдВред "рдЦрдВрдбрд┐рдд" рдореЛрдб рдореЗрдВ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп "

рдЖрдЗрдП рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ Node.js рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рдорд░реНрдерди рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Node.js рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рдВрдЧреНрд░рд╣ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓, рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдФрд░ Ajax рд╣реИрдВрдбрд▓рд░, DBMS (MySQL, PostgreSQL, SQLite, MongoDB) рд╕реЗ рдХрдиреЗрдХреНрдЯрд░, рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди, CSS рдЗрдВрдЬрди, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд┐рд╕реНрдЯрдо (OAuth), XML рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рдеред

рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Node.js рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдХреЙрд▓рдмреИрдХ рд╣реИрдВрдбрд▓рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ epoll, kqueue, /dev/poll рдФрд░ рдЪрдпрди рд╣реИрдВред рдХрдиреЗрдХреНрд╢рди рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, libuv рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ libev рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ IOCP рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдб-рдСрди рд╣реИред рд▓рд┐рдмрд┐рдпреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдереНрд░реЗрдб рдкреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реА-рдПрд░реЗрд╕ рдХреЛ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдореЛрдб рдореЗрдВ рдбреАрдПрдирдПрд╕ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░, рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдХреА рддрд░рд╣, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЕрдирд╛рдо рдкрд╛рдЗрдк (рдкрд╛рдЗрдк) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд V8 рдЗрдВрдЬрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Microsoft рдЪрдХреНрд░-рдХреЛрд░ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде Node.js рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ)ред

рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, Node.js рдкрд░реНрд▓ AnyEvent, рд░реВрдмреА рдЗрд╡реЗрдВрдЯ рдорд╢реАрди, Python рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ Tcl рдЗрд╡реЗрдВрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди Node.js рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ. рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╡реЗрдВрдЯ-рд╕рдВрдЪрд╛рд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "var рдкрд░рд┐рдгрд╛рдо = db.query("select..");" рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде, Node.js рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдХреЛрдб рдХреЛ "db.query("select..", function (рдкрд░рд┐рдгрд╛рдо) {рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг});" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рддреБрд░рдВрдд рдЖрдЧреЗ рдХреЗ рдХреЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдбреЗрдЯрд╛ рдЖрдиреЗ рдкрд░ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ