ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΠ²ΠΎΡΠΎ Π½Π° Node.js 16.0, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° JavaScript, ΡΡΠ°Π½Π° ΡΠ°ΠΊΡ. Node.js 16.0 Π΅ Π² ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ ΡΠΎΠ·ΠΈ ΡΡΠ°ΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π· ΠΎΠΊΡΠΎΠΌΠ²ΡΠΈ, ΡΠ»Π΅Π΄ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Node.js 16.0 ΡΠ΅ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄ΠΎ Π°ΠΏΡΠΈΠ» 2023 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ LTS ΠΊΠ»ΠΎΠ½ Node.js 14.0 ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄ΠΎ Π°ΠΏΡΠΈΠ» 2023 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Π½Π° ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΈΡ LTS ΠΊΠ»ΠΎΠ½ 12.0 Π΄ΠΎ Π°ΠΏΡΠΈΠ» 2022 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° LTS ΠΊΠ»ΠΎΠ½Π° 10.0 ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΡΠ»Π΅Π΄ 10 Π΄Π½ΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ:
- ΠΠ²ΠΈΠ³Π°ΡΠ΅Π»ΡΡ V8 Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 9.0 (Π² Node.js 15 Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π²Π΅ΡΡΠΈΡ 8.6), ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π² Node.js 16 Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ βindicesβ Π·Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (Π²ΠΊΠ»ΡΡΠ²Π° ΠΌΠ°ΡΠΈΠ² Ρ Π½Π°ΡΠ°Π»Π½ΠΈ ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π½Π° Π³ΡΡΠΏΠΈΡΠ΅ ΠΎΡ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ), ΠΌΠ΅ΡΠΎΠ΄ΡΡ Atomics.waitAsync (Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Atomics.wait), ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° await Π½Π° Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅. Π£ΡΠΊΠΎΡΠ΅Π½ΠΎ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ API Timers Promises, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠΈ ΠΈ Π²ΡΡΡΠ° Promise ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° util.promisify(). import { setTimeout } from βtimers/promisesβ; async function run() { await setTimeout(5000); console.log(βHello, World!β); } run();
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° API Web Crypto, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΡΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ Ρ Π΅ΡΠΎΠ²Π΅, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠΈΡΠ»Π°. API Π²ΠΊΠ»ΡΡΠ²Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅.
- N-API (API Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ) Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 8.
- ΠΠ·Π²ΡΡΡΠ΅Π½ Π΅ ΠΏΡΠ΅Ρ ΠΎΠ΄ΡΡ ΠΊΡΠΌ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ NPM 7.10.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ»Π°ΡΠ° AbortController, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Web API AbortController ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΎΡΠΌΠ΅Π½ΡΠ½Π΅ Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈ Π² ΠΈΠ·Π±ΡΠ°Π½ΠΈ API Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Promise.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΡΠ΅ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° Source Map, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄.
- ΠΠ° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Web API ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ buffer.atob(data) ΠΈ buffer.btoa(data).
- ΠΠ°ΠΏΠΎΡΠ½Π° Π΅ ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΠΈ Π·Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° Apple, ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½ΠΈ Ρ ARM ΡΠΈΠΏ M1.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΡΠ° ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ Π΄ΠΎ GCC 8.3.
ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Node.js ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π·Π° ΡΡΡΠ²ΡΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° Web ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠ° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π·Π° 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. ΠΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ» ΠΎΡ Π½ΠΈΡΠΊΠΈ (thread pool) ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libeio, Π° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° DNS Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠ΅ΠΆΠΈΠΌ Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ c-ares. ΠΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅, ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π² ΠΏΡΠ» ΠΎΡ Π½ΠΈΡΠΊΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈ, ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΡΠ²ΠΎΡΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΡΠ΅Π· Π½Π΅Π½Π°Π·ΠΎΠ²Π°Π½ ΠΊΠ°Π½Π°Π» (pipe). ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° JavaScript ΠΊΠΎΠ΄ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡ ΠΎΡ Google Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» V8 (Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Microsoft ΡΠ°Π·Π²ΠΈΠ²Π° Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Node.js Ρ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Chakra-Core).
ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ, Node.js Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΡΠΈΡΠ΅ Perl AnyEvent, Ruby Event Machine, Python Twisted ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ Π² Tcl, Π½ΠΎ ΡΠΈΠΊΡΠ»ΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ (event loop) Π² Node.js Π΅ ΡΠΊΡΠΈΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ Π² ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π² Π±ΡΠ°ΡΠ·ΡΡ. ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Node.js Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΠΉΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ βvar result = db.query(βselect..β);β Ρ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅, Π² Node.js ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΡΡ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Ρ.Π΅. ΠΊΠΎΠ΄ΡΡ ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Π² βdb.query(βselect..β, function (result) {ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°});β, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΊΡΠΌ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄, Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠΎ ΠΌΡΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Deno, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° ΠΎΡ ΡΡΠ·Π΄Π°ΡΠ΅Π»Ρ Π½Π° Node.js Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΎΡ Π½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ Deno, Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° 4.9 ΠΌΠ»Π½. Π΄ΠΎΠ»Π°ΡΠ° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΈ. ΠΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Deno Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π° Node.js, Π½ΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΎΡΡΡΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ, Π΄ΠΎΠΏΡΡΠ½Π°ΡΠΈ Π² Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Node.js, ΠΈ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΏΠΎ-Π·Π°ΡΠΈΡΠ΅Π½Π° ΡΡΠ΅Π΄Π°. ΠΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π° ΡΠ΅, ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Deno ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π½Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, Π° ΠΌΠΎΠ΄Π΅Π»ΡΡ Open Core Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ»Π°ΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ° ΠΊΠ°ΡΠΎ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ² Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Deno.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
