Π”ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° JavaScript ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Node.js 21.0

ΠŸΡƒΡΠ½Π° сС Node.js 21.0, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния с JavaScript. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° вСрсия 21.0 Π½Π° Node.js Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ 6 мСсСца. ΠŸΡ€Π΅Π· слСдващитС Π΄Π½ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ стабилизиранСто Π½Π° вСрсия 20 Π½Π° Node.js, която Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ статус LTS ΠΈ Ρ‰Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2026 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° LTS вСрсия Node.js 18.0 Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄ΠΎ сСптСмври 2025 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Π½Π° ΠΏΠΎ-ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° LTS вСрсия 16.0 Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2024 Π³ΠΎΠ΄ΠΈΠ½Π°.

Основни подобрСния:

  • ОбявСн Π΅ стабилСн API Fetch, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° рСсурси ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ улСснява написванСто Π½Π° унивСрсалСн JavaScript ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ подходящ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡΡ‚Π° Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ‚ HTTP/1.1 ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° undici ΠΈ Π΅ максимално Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ аналогичния API, прСдоставян ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΈΡ‚Π΅. API Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ fetch() ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Headers, Request ΠΈ Response, прСдставляващи HTTP заглавията, заявкитС ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° API WebStreams, която прСдоставя Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. API позволява добавянСто Π½Π° собствСни ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ с Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π±Π΅Π· Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚ цялото Ρ„Π°ΠΉΠ» Π΄Π° бъдС Π·Π°Ρ€Π΅Π΄Π΅Π½ΠΎ. Π’ Node.js са Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ΠΈ DecompressionStream.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална рСализация Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° WebSocket, ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠ° с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΈΡ‚Π΅. Π—Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° WebSocket Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ Ρ„Π»Π°Π³ "--experimental-websocket".
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ СкспСримСнталСн Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° рСализация Π½Π° JavaScript ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ESM (ECMAScript ΠœΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΈ) вмСсто CommonJS (спСцифичСн Π·Π° Node.js). ΠŸΡ€ΠΎΠΌΡΠ½Π°Ρ‚Π° Π½Π΅ засяга ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‡ΠΈΠΉΡ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ ясно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‡Ρ€Π΅Π· ΠΏΠΎΠ»Π΅Ρ‚ΠΎ "type" Π² package.json, Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Ρ‡Ρ€Π΅Π· Ρ„Π»Π°Π³Π° "--input-type" ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° (.mjs Π·Π° ESM, .cjs Π·Π° CommonJS). ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ясно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ CommonJS (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ°Ρ‚ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ".js"), ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° новия Ρ€Π΅ΠΆΠΈΠΌ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ ESM ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π—Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ настройки Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ„Π»Π°Π³ "--experimental-default-type".
  • ДвигатСлят V8 Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Π΄ΠΎ вСрсия 11.8, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² Chromium 118, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ArrayBuffer.prototype.transfer, Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅ Π½Π° масиви (ΠΌΠ΅Ρ‚ΠΎΠ΄ groupBy) ΠΈ WebAssembly инструкции Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° константи (i32.add, i32.sub, i32.mul, i64.add, i64.sub ΠΈ i64.mul).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° globalPreload Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π°; вмСсто Π½Π΅Π³ΠΎ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ слСдва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ извикванията register ΠΈ initialize.
  • Π’ функцията fs.writeFile Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° опция β€žflushβ€œ Π·Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ изтласкванС Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° устройството слСд всяка опСрация запис.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ производитСлността Π½Π° ΠΊΠΎΠ΄Π°, ΡΠ²ΡŠΡ€Π·Π°Π½ с Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° URL, API fetch, ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, node:fs ΠΈ HTTP.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΠΎΠ±Π΅ΠΊΡ‚ navigator. НапримСр, Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° броя Π½Π° ядрото Π½Π° CPU ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ свойството navigator.hardwareConcurrency.
  • Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° β€žβ€”testβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° glob-маски Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° стартирани тСстовС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ β€žβ€”test **/*.test.jsβ€œ).
  • Актуализирани са пакСтният ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ npm Π΄ΠΎ вСрсия 10.2.0 ΠΈ ΠΏΠ°Ρ€ΡΠ΅Ρ€ΡŠΡ‚ llhttp Π΄ΠΎ вСрсия 9.1.2.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Visual Studio 2019 ΠΈ вСрсии Π½Π° macOS ΠΏΠΎ-стари ΠΎΡ‚ 11.0 Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π°.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 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. Π—Π° създаванС Π½Π° ΠΏΡƒΠ» ΠΎΡ‚ нишки (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) {ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°});β€œ, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±ΡŠΡ€Π·ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° към слСдващия ΠΊΠΎΠ΄, Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΠΎ мярка Π½Π° ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster