Node.js 19.0, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² JavaScript, Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ°. Node.js 19 Π΅ ΡΠ΅Π΄ΠΎΠ²Π΅Π½ ΠΊΠ»ΠΎΠ½ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Ρ Π½Π°Π»ΠΈΡΠ½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ ΡΠ½ΠΈ 2023 Π³. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π½ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°Π²ΡΡΡΠ΅Π½Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ»ΠΎΠ½Π° Node.js 18, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ LTS ΡΡΠ°ΡΡΡ ΠΈ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄ΠΎ Π°ΠΏΡΠΈΠ» 2025 Π³. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ LTS ΠΊΠ»ΠΎΠ½ Π½Π° Node.js 16.0 ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄ΠΎ ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2023 Π³., Π° ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° LTS ΠΊΠ»ΠΎΠ½ 14.0 Π΄ΠΎ Π°ΠΏΡΠΈΠ» 2023 Π³.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ:
- ΠΠ²ΠΈΠ³Π°ΡΠ΅Π»ΡΡ V8 Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 10.7, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² Chromium 107. Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΊΠ»ΠΎΠ½Π° Node.js 18 ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΅ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° API Intl.NumberFormat, ΠΊΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Ρ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ formatRange (), formatRangeToParts() ΠΈ selectRange(), Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡΠΈ, Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° Π·Π°ΠΊΡΡΠ³Π»ΡΠ²Π°Π½Π΅ ΠΈ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΡΠ½ΠΎΡΡ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ Π΄Π΅ΡΠ΅ΡΠΈΡΠ½ΠΈ ΡΠΈΡΠ»Π°. ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ llhttp 8.1.0 ΠΈ npm 8.19.2 ΡΡΡΠΎ ΡΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° "node -watch" Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΠ» ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ "node -watch index.js", ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° index.js).
- ΠΠ° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠΈ HTTP/HTTPS Π²ΡΡΠ·ΠΊΠΈ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° HTTP 1.1 Keep-Alive ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΡΠ°Π²Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΎΡΠ²ΠΎΡΠ΅Π½Π° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ HTTP Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° Π²ΡΡΠ·ΠΊΠ°. ΠΡΠ°ΠΊΠ²Π° ΡΠ΅ Keep-Alive Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ° Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π½Π° 5 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° HTTP Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Keep-Alive Π² ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° HTTP ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Keep-Alive, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° HTTP ΡΡΡΠ²ΡΡΠ° Node.js.
- WebCrypto API Π΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ Π² ΡΡΠ°Π±ΠΈΠ»Π½Π°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ Ed25519, Ed448, X25519 ΠΈ X448. ΠΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΠΎΠ΄ΡΠ»Π° WebCrypto Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ globalThis.crypto ΠΈΠ»ΠΈ require('node:crypto').webcrypto.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ DTrace, SystemTap ΠΈ ETW (ΠΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ Π·Π° Windows) Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ°, ΡΠΈΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π±Π΅ΡΠ΅ ΡΡΠ΅ΡΠ΅Π½Π° Π·Π° Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ ΠΉ Π°ΠΊΡΡΠ°Π»Π½Π° ΠΏΡΠΈ Π»ΠΈΠΏΡΠ° Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΠ»Π°Π½ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Node.js ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π·Π° ΡΡΡΠ²ΡΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠ° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π·Π° Node.js Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° Π³ΠΎΠ»ΡΠΌΠ° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π² ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 ΡΡΡΠ²ΡΡΠΈ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π± ΡΠ°ΠΌΠΊΠΈ, WebSocket ΠΈ Ajax ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ, Π‘Π£ΠΠ ΠΊΠΎΠ½Π΅ΠΊΡΠΎΡΠΈ (MySQL, PostgreSQL, SQLite, MongoDB), ΠΌΠ°ΡΠΈΠ½ΠΈ Π·Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ, CSS ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΊΡΠΈΠΏΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (OAuth), XML Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ.
ΠΠ° Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Node.js ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄Π΅Π» Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΠΊΠΎΠ΄, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ ΡΠ° epoll, kqueue, /dev/poll ΠΈ select. ΠΠ° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libuv, ΠΊΠΎΡΡΠΎ Π΅ Π΄ΠΎΠ±Π°Π²ΠΊΠ° Π·Π° libev Π½Π° Unix ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ IOCP Π½Π° Windows. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libeio ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ» ΠΎΡ Π½ΠΈΡΠΊΠΈ, Π° c-ares Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° DNS Π·Π°ΡΠ²ΠΊΠΈ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠ΅ΠΆΠΈΠΌ. ΠΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅, ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π²ΡΡΡΠ΅ Π² ΠΏΡΠ»Π° ΠΎΡ Π½ΠΈΡΠΊΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈ, ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅Π· Π½Π΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ ΠΊΠ°Π½Π°Π» (ΡΡΡΠ±Π°). ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° JavaScript ΠΊΠΎΠ΄ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ V8, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ Google (Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Microsoft ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Node.js Ρ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Chakra-Core).
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° ΡΠΈ Node.js Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Tcl, Π½ΠΎ ΡΠΈΠΊΡΠ»ΡΡ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π² Node.js Π΅ ΡΠΊΡΠΈΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ°. ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° node.js, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΎΡΠΎ ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ "var result = db.query("select..");" Ρ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅, Node.js ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Ρ.Π΅. ΠΊΠΎΠ΄ΡΡ ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Π² "db.query("select..", function (result) {result processing});", Π² ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΠ΄ ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΈ ΠΏΡΠΈΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru