Node.js 21.0 ááẠJavaScript ááœáẠááœááºáááºá¡ááá®áá±ážááŸááºážáá»á¬áž áá¯ááºáá±á¬ááºáááºá¡ááœáẠááááºáá±á¬ááºážáá áºáá¯ááŒá áºáááºá Node.js 21.0 áá¬áááœá²ááᯠ6 áááŒá¬ áá¶á·ááá¯ážáá±ážáá«áááºá áá¬ááá·áºáááºáá»á¬ážááœááºá Node.js 20 áá¬áááœá²á áááºááŒáááºááŸá¯ááᯠááŒá®ážááŒá±á¬ááºá á±áááºááŒá áºááŒá®ážá áááºážááẠLTS á¡ááŒá±á¡áá±ááᯠáááŸááááºááŒá áºááŒá®áž á§ááŒá®á 2026 á¡áá áá¶á·ááá¯ážáá±ážáááºááŒá áºáááºá Node.js 18.0 á áááẠLTS áá¬áááœá²ááᯠááŒá¯ááŒááºááááºážááááºážááŸá¯ááẠá ááºáááºáᬠ2025 á¡áá ááŒá¬ááŒáá·áºáááºááŒá áºááŒá®áž áá±á¬ááºáá¯á¶áž LTS áá¬áááœá² 16.0 áááá¯ááºáá® 2024 áá¯ááŸá Ạá§ááŒá®á XNUMX áá¯ááŸá áºá¡áá ááŒá áºáááºá
á¡ááá ááá¯ážáááºááŸá¯áá»á¬áž-
- Fetch API ááᯠááœááºáááºáá±á«áºááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážáááºáááºááŸáá·áº server ááŸáá·áº client áááºáá»á¬ážááœáẠá¡áá¯ááºáá¯ááºááẠááá·áºáá»á±á¬áºáá±á¬ universal JavaScript áá¯ááºáá±ážáá¬ážááŸá¯ááᯠááá¯ážááŸááºážá á±áááºá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®áž áááºááŒáááºááŒá±á¬ááºáž ááŒá±áá¬áá¬ážáááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠHTTP/1.1 undici client ááŸáá¯ááºáá±á«áºááœáẠá¡ááŒá±áá¶áá¬ážááŒá®áž ááá±á¬ááºáá¬áá»á¬ážááœáẠáá±ážáá¬ážááá·áº á¡áá¬ážáá° API ááŸáá·áº á¡áá®ážá ááºáá¯á¶ážááŒá áºáááºá API ááœáẠfetch() method ááŸáá·áº Headers objects áá»á¬áž áá«áááºáááºá HTTP áá±á«ááºážá á®ážáá»á¬ážá áá±á¬ááºážááá¯áá»ááºááŸáá·áº áá¯á¶á·ááŒááºááŸá¯ááᯠááá¯ááºá á¬ážááŒá¯áá±á¬ áá±á¬ááºážááá¯ááŸá¯ááŸáá·áº áá¯á¶á·ááŒááºááŸá¯á const res = wait fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = á á±á¬áá·áºáá±ááẠres.json(); console.log(áá±áá¬); }
- ááœááºáááºááŸáááŸááá±á¬ áá±áá¬á á®ážááŒá±á¬ááºážáá»á¬ážááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááœáá·áºáá±ážááá·áº WebStreams API á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŸá¬ áááºááŒáááºááœá¬ážáá«ááŒá®á ááá¯ááºáá áºáá¯áá¯á¶ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááẠáá á±á¬áá·áºááá¯ááºážáá² ááœááºáááºáá±á«áºá០á¡áá»ááºá¡áááºáá»á¬áž áá±á¬ááºááŸááá¬áááºááŸáá·áºá¡áá»áŸ áá±áá¬ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬ ááá·áºááá¯ááºááá¯áẠááá¯ááºááœááºááŒá±ááŸááºážáá°áá»á¬ážááᯠAPI á ááá·áºááœááºážááá¯ááºá á±áá«áááºá Node.js ááœáẠáááŸáááá¯ááºáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážááẠReadableStream*á TransformStream*á WritableStream*á TextEncoderStreamá TextDecoderStreamá CompressionStream ááŸáá·áº DecompressionStream ááá¯á· áá«áááºáááºá
- ááá±á¬ááºáá¬áá»á¬ážááŸáá·áº ááœá²áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬ WebSocket áááá¯ááºážááá·áºá á ááºážáááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá WebSocket áá¶á·ááá¯ážááŸá¯ááᯠááœáá·áºáááºá "--experimental-websocket" á¡áá¶ááᯠáá±ážáá¬ážáááºá
- CommonJS (áá®ážááá·áº Node.js) á¡á á¬áž JavaScript áá±á¬áºáá»á°ážáá»á¬áž ESM (ECMAScript Modulesá á¡áá¯á¶ážááŒá¯ááá·áº ááá±á¬ááºáá¬áá»á¬ážá¡ááœáẠáá±á¬áºáá»á°ážáá»á¬áž) ááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠá ááºážáááºáá¯ááºáá áºáᯠáááºááá·áºáá²á·áááºá ááŒá±á¬ááºážáá²ááŸá¯ááẠpackage.json ááœáẠ"--input-type" á¡áá¶ááŸáá áºááá·áº áááºááŸááºáá¬ážáá±á¬ "á¡áá»áá¯ážá¡á á¬áž" á¡ááœááºááŸáá áºááá·áº áá±á¬áºáááºáááºááŸááºáá¬ážááá·áº áá±á¬áºáá»á°ážáá»á¬ážá¡áá±á«áº áááºáá±á¬ááºááŸá¯áááŸááá«á ááá¯á·ááá¯áẠááá¯ááºááá¯ážáá»á²á·ááŸá¯ (ESM á¡ááœáẠ.mjsá .cjs á¡ááœáẠ.mjsá CommonJS á¡ááœááº)á ááá¯á·áá±á¬áºá CommonJS á¡ááŒá ẠááŒááºáá¬ážá áœá¬ ááááºááŸááºáá¬ážáá±á¬ áá±á¬áºáá»á°ážáá»á¬áž (á¥ááá¬á â.jsâ ááá¯ážáá»á²á·ááŸá¯ ááŸááááº) áá¯ááºá¡áá áºááᯠááœáá·áºáá¬ážáá±á¬á¡áá«ááœáẠESM áá±á¬áºáá»á°ážáá»á¬ážá¡ááŒá Ạááá±á¬áá¬ážáááá·áºáááºá áá±á¬áºáá»á°ážáááºáááºá¡áá áºáá»á¬ážááᯠá¡áááºááœááºážáááºá¡ááœáẠ"--experimental-default-type" á¡áá¶ááᯠá¡ááá¯ááŒá¯áá¬ážáááºá
- V8 á¡ááºáá»ááºááᯠChromium 11.8 ááœááºá¡áá¯á¶ážááŒá¯áá¬ážááŒá®ážá ááᯠArrayBuffer.prototype.transfer áááºážáááºážá á¡á¯ááºá á¯ááœá²á·ááá¯ááºááŸá¯ (groupBy method) ááŸáá·áº WebAssembly ááááºážáá±áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠááœáŸááºááŒá¬ážáá»ááºáá»á¬áž (i118.addá i32.subá i32.mulá i32 .addá i64.sub ááŸáá·áº i64.mul)á
- globalPreload handler á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáááºááá¯ááºážááá¯ááºáááºá modules áá»á¬ážááᯠconfigure áá¯ááºáááºá¡ááœáẠááŸááºáá¯á¶áááºááŒá®áž áá±á«áºááá¯ááŸá¯áá»á¬ážááᯠáááŠážá áááºáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº áááºááá¯ááºážááá¯ááºáá«áááºá
- áá±ážááŸá¯áá áºáá¯á á®ááá¯ááºážááŒá®ážáá±á¬áẠdata áá»á¬ážááᯠdrive ááá¯á· flush ááŒá áºá¡á±á¬ááºááœááºážá¡á¬ážáá±ážáááºá¡ááœáẠ"flush" option ááᯠfs.writeFile áá¯ááºáá±á¬ááºáá»ááºááœáẠááá·áºááœááºážáá¬ážáá«áááºá
- URL ááœá²ááŒááºážá áááºááŒá¬ááŒááºážá ááá°ááŒááºáž APIá á á®ážááŒá±á¬ááºážáá»á¬ážá node:fs ááŸáá·áº HTTP ááá¯á·ááŸáá·áºáááºá ááºáá±á¬ áá¯ááºáá»á¬ážáá áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá¬ážáááºá
- ááá¹áá¬áá¯á¶ážááá¯ááºáᬠáááºážááœáŸááºááŸá¯á¡áá¬ááá¹áá¯ááᯠááá·áºááœááºážáá¬ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá CPU cores á¡áá±á¡ááœááºááŸáá·áºáááºáááºááá·áº áá±áá¬ááá¯ááá°áááºá áááºááẠnavigator.hardwareConcurrency ááá¯ááºááá¯ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- ââtestâ ááá·áºáááºáá±á¬ááºááœááºá áá¯ááºáá±á¬ááºááẠá ááºážáááºááŸá¯áá»á¬ážááᯠááœá±ážáá»ááºáááºá¡ááœáẠglob áá»ááºááŸá¬áá¯á¶ážáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠááá·áºááœááºážáá¬ážááẠ(á¥ááá¬á áááºááẠââtest **/*.test.jsâ áᯠáááºááŸááºááá¯ááºáá«áááºá)
- áá¯ááºááá¯ážáá¬ážáá±á¬ á¡áá¯ááºáááºáá±áá»á¬ npm 10.2.0 ááŸáá·áº llhttp 9.1.2 parser ááᯠá¡ááºááááºáá¯ááºááŒá®ážáá«ááŒá®á
- Visual Studio 2019 á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŸáá·áº 11.0 áááºáá±á¬ááºážáá±á¬ macOS áá¬ážááŸááºážáá»á¬ážááᯠáááºááá¯ááºážááá¯ááºáá«ááŒá®á
Node.js ááááºáá±á¬ááºážááᯠáááºá¡ááºááá®áá±ážááŸááºážáá»á¬ážá áá¬áá¬ááááºážááááºážááŒááºážá¡ááœááºááŸáá·áº áá¯á¶ááŸááºá¡áá¯á¶ážááŒá¯áá°ááŸáá·áº áá¬áá¬ááœááºáááºáááá¯ááááºáá»á¬ážááᯠáááºáá®ážáááºá¡ááœáẠááŸá áºáá»áá¯ážáá¯á¶ážá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá Node.js á¡ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬ážá áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáá»á²á·ááœááºáááºá¡ááœáẠHTTPá SMTPá XMPPá DNSá FTPá IMAPá POP3 áá¬áá¬áá»á¬ážááŸáá·áº áááá¯ááºážááá·áºáá»á¬ážá áá±á«ááºážá ááºááŸá¯áá»á¬ážá¡ááœáẠáá±á¬áºáá»á°ážáá»á¬ážááᯠáááºááŸá¬ááœá±ááá¯ááºááá·áº áá±á¬áºáá»á°ážá¡áá»á¬ážá¡ááŒá¬ážááᯠááŒááºáááºáá¬ážáá«áááºá á¡áá»áá¯ážáá»áá¯ážáá±á¬ áááºáá±á¬ááºáá»á¬ážá WebSocket ááŸáá·áº Ajax ááá¯ááºááœááºáá°áá»á¬ážá DBMS áá»áááºáááºááŸá¯áá»á¬áž (MySQLá PostgreSQLá SQLiteá MongoDB)á ááá°áá¬áá¯á¶á á¶á¡ááºáá»ááºáá»á¬ážá CSS á¡ááºáá»ááºáá»á¬ážá crypto á¡ááºáááá¯áá®áááºáá»á¬ážááŸáá·áº ááœáá·áºááŒá¯áá»ááºá áá áºáá»á¬áž (OAuth)á XML ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá»á¬ážá
á¡ááŒáá¯ááºáá±á¬ááºážááá¯ááŸá¯áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážá¡á¬áž áá±áá»á¬á á±áááºá Node.js ááẠááááºááá¯á·ááŒááºážááá¯ááºáá±á¬ ááŒá áºáááºááá¯ááºááœááºááŒááºážááŸáá·áº ááŒááºáá±á«áºááŒááºážááá¯ááºáᬠá¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááᯠá¡ááŒá±áá¶á Node.js ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá multiplexing áá»áááºáááºááŸá¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ áááºážáááºážáá»á¬ážááŸá¬ epollá kqueueá /dev/poll ááŸáá·áº ááœá±ážáá»ááºáá«á áá»áááºáááºááŸá¯ multiplexing á¡ááœááºá Windows ááŸá Unix á áá áºáá»á¬ážááŸáá·áº IOCP á¡ááœáẠlibev á¡ááœáẠadd-on áá áºáá¯ááŒá áºááá·áº libuv á á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá libeio á á¬ááŒáá·áºááá¯ááºááᯠthread pool áá áºáá¯áááºáá®ážáááºá¡áá¯á¶ážááŒá¯áá¬ážááŒá®ážá ááááºááá¯á·ááŒááºážááá¯ááºáá±á¬áá¯ááºááœáẠDNS áá±ážááŒááºážááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠc-ares ááᯠáá±á«ááºážá ááºáá¬ážáááºá ááááºááá¯á·ááŒááºážááᯠááŒá áºá á±áá±á¬ á áá áºáá±á«áºááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠthread pool á¡ááœááºážááœáẠáá¯ááºáá±á¬ááºááŒá®ážá ááá¯á·áá±á¬áẠsignal handlers áá»á¬ážáá²á·ááá¯á· áááºážááá¯á·á á¡áá¯ááºááááºááᯠá¡áááºááá±á¬áºááá¯áá±á¬ ááá¯áẠ(pipe) ááŸáááá·áº ááŒááºáááºááœáŸá²ááŒá±á¬ááºážáá±ážáá«áááºá JavaScript áá¯ááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá¡á¬áž Google á០áááºáá®ážáá¬ážáá±á¬ V8 á¡ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá¶á·ááá¯ážáá±ážááẠ(ááá¯á·ááŒáẠMicrosoft ááẠChakra-Core á¡ááºáá»ááºááŒáá·áº Node.js áá¬ážááŸááºážááᯠáááºáá®ážáá±áááº)á
áááºážáá¡áááá¡áá»ááºááŸá¬ Node.js ááẠPerl AnyEventá Ruby Event Machineá Python Twisted frameworks ááŸáá·áº Tcl event implementation ááá¯á·ááŸáá·áº áááºáá°áá±á¬áºáááºáž Node.js ááŸá event loop ááᯠdeveloper á០ááŸááºáá¬ážááŒá®áž áááºáááºáá±ááá·áº áááºá¡ááºááá®áá±ážááŸááºážááœáẠááŒá
áºáááºááá¯ááºááœááºáá¯á¶ááŸáá·áº áááºáá°áááºá browser ááœááºá node.js á¡ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬áž áá±ážáá¬ážááá·áºá¡áá«á áááºááẠ"var result = db.query("select..");" á¡á
á¬áž event-driven programming á áááá»áá±á¬á¡áá»ááºáá»á¬ážááᯠááá·áºááœááºážá
ááºážá
á¬ážááẠááá¯á¡ááºáá«áááºá á¡áá¯ááºááŒá®ážá
á®ážááŸá¯ááŸáá·áº ááááºáá»á¬ážá áá±á¬ááºáááºááœá²áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá
á±á¬áá·áºááá¯ááºážááŒááºážááŒáá·áº Node.js ááẠáá»áááºááŸááá¯ááºáá±á¬ááºááŒááºážááááá¬áááᯠá¡áá¯á¶ážááŒá¯áááºá áá¯ááºááᯠ"db.query("select.."á function (result) {result processing});" ááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºá áááºážááœáẠááááºážáá»á¯ááºááŸá¯ááẠáá±á¬ááºáááºáá¯ááºááá¯á· áá»ááºáá»ááºážáá±á¬ááºááœá¬ážáááºááŒá
áºááŒá®ážá áá±áá¬áá±á¬ááºááŸááááºááŸáá·áº áá±ážááŒááºážáá»ááºááááºááᯠá
á®áá¶áá±á¬ááºááœááºáááºááŒá
áºáááºá
source: opennet.ru