Node.js 18.0 ááẠJavaScript ááœáẠááœááºáááºá¡ááºááá®áá±ážááŸááºážáá»á¬áž áá¯ááºáá±á¬ááºáááºá¡ááœáẠááááºáá±á¬ááºážáá áºáá¯ááŒá áºáááºá Node.js 18.0 ááᯠáá±ááŸááºáá¶á·ááá¯ážááŸá¯áá¬áááœá²áá áºáá¯á¡ááŒá ẠáááºááŸááºáá¬ážáá±á¬áºáááºáž áááºááŒáááºááŒá®ážáá±á¬áẠá¡á±á¬ááºááá¯áá¬áááœááºáᬠá€á¡ááŒá±á¡áá±ááᯠáááºááŸááºáá±ážáááºááŒá áºáááºá Node.js 18.x ááᯠ2025 á§ááŒá®áá¡áá áá¶á·ááá¯ážáá±ážáá«áááºá Node.js 16.x á áááẠLTS áá¬áááœá²ááᯠááŒá¯ááŒááºááááºážááááºážááŸá¯ááẠá§ááŒá®á 2024 á¡áá ááŒá¬ááŒáá·áºáááºááŒá áºááŒá®áž áá±á¬ááºáá¯á¶áž LTS áá¬áááœá² 14.x áááá¯ááºáá® 2023 áá¯ááŸá Ạá§ááŒá®áá¡áá ááŒá áºáááºá 12.x LTS áá¬áááœá²ááᯠá§ááŒá®á 30 áááºáá±á·ááœáẠáááºááá¯ááºážáááºááŒá áºááŒá®áž Node.js 17.x á¡ááá·áºááœá²áá¬áááœá²ááᯠááœááºá 1 áááºáá±á·ááœáẠáááºááá¯ááºážáááºááŒá áºáááºá
á¡ááá ááá¯ážáááºááŸá¯áá»á¬áž-
- V8 á¡ááºáá»ááºááᯠChromium 10.1 ááœááºá¡áá¯á¶ážááŒá¯ááá·áº áá¬ážááŸááºáž 101 ááá¯á· á¡ááá·áºááŒáŸáá·áºáááºáá¬ážáá«áááºá Node.js á 17.9.0 áá¯ááºáá±ááŸá¯ááŸáá·áº ááŸáá¯ááºážááŸááºáá«áá á¡áá¯á¶ážááŸáá·áº áááºá ááºáá±ááá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááŸá¬ááœá±áááºá¡ááœáẠfindLast ááŸáá·áº findLastIndex áááºážáááºážáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡ááºá¹áá«áááºáá»á¬ážá¡ááœáẠááá¯á¡áá« áá¶á·ááá¯ážááŸá¯ááŸááá«áááºá array áá áºáá¯ááŸáá·áº Intl.supportedValuesOf áá¯ááºáá±á¬ááºáá»ááºá ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ Intl.Locale APIá á¡áááºážáááºáááºáá»á¬ážááŸáá·áº áá®ážááá·áºáááºážáááºážáá»á¬ážááᯠáááŠážá áááºááŒááºážá¡á¬áž á¡ááŸáááºááŒáŸáá·áºáá²á·áááºá
- á ááºážáááºááŸá¯ fetch() API ááᯠááœááºáááºáá±á«áºááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáááºá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážááá·áº áá°áááºážá¡ááá¯ááºáž ááœáá·áºáá¬ážáááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠHTTP/1.1 undici client ááŸáá¯ááºáá±á«áºááœáẠá¡ááŒá±áá¶áá¬ážááŒá®áž ááá±á¬ááºáá¬áá»á¬ážááœáẠáá±ážáá¬ážááá·áº á¡áá¬ážáá° API ááŸáá·áº á¡áá®ážá ááºáá¯á¶ážááŒá áºáááºá áááºážááœáẠHTTP áá±á¬ááºážááá¯áá»ááºááŸáá·áº áá¯á¶á·ááŒááºááŸá¯áá±á«ááºážá á®ážáá»á¬ážááᯠááŒáá¯ážááá¯ááºááŒááºážá¡ááœáẠFormDataá Headersá Request ááŸáá·áº Response á¡ááºáá¬áá±á·á áºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áá«áááºáááºá const res = wait fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = á á±á¬áá·áºáá±ááẠres.json(); console.log(áá±áá¬); }
- Web Stream API á á ááºážáááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá·áºááœááºážááŒá®áž ááœááºáááºááŸáááŸááá±á¬ áá±áá¬á á®ážááŒá±á¬ááºážáá»á¬ážááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááœáá·áºáá±ážáá¬ážáá«áááºá ááá¯ááºáá áºáá¯áá¯á¶ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááẠáá á±á¬áá·áºááá¯ááºážáá² ááœááºáááºáá±á«áºá០á¡áá»ááºá¡áááºáá»á¬áž áá±á¬ááºááŸááá¬ááá·áºá¡ááœáẠAPI ááẠááá·áºááá¯ááºááá¯áẠááá¯ááºááœááºáá°á¡á¬áž ááá·áºááœááºážááá¯ááºá á±áá«áááºá Node.js ááœáẠááá¯áááŸáááá¯ááºááá·áºá¡áá¬áá»á¬ážááẠReadableStream*á TransformStream*á WritableStream*á TextEncoderStreamá TextDecoderStreamá CompressionStream ááŸáá·áº DecompressionStream ááá¯á· áá«áááºáááºá
- Blob API ááᯠáááºááŒáááºáá±á¬áá±áá¬ááá¯á· ááœáŸá±á·áá¬ážááŒá®ážá áááºááẠááá°áá®áá±á¬ á¡áá¯ááºááá¬ážááá¯ááºážáá»á¬ážááœáẠáá±ážáááºážá áœá¬ á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ áá¯ááºááŒááºážáá±áá¬ááᯠáááºáá°ážááá·áºááœááºážááá¯ááºá á±áááºááŒá áºáááºá
- BroadcastChannel API ááẠáááºááŒáááºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážááŒá®ážá "áá±ážááá¯á·áá°ááŠážáááºáž - áááºáá¶áá°á¡áá»á¬ážá¡ááŒá¬áž" áá±á¬áºáááºááœáẠáááºáá±á·áá»áºáá»á¬ážáááŸááºááŒááºážááᯠá¡ááŒáá¯ááºá¡ááá¯ááºáá¯ááºááœáẠá á¯á ááºážááá¯ááºá á±áááºááŒá áºáááºá
- áááºááá·áºáá¬ážáá±á¬ á ááºážáááºááŸá¯ module node:TAP (Test Anything Protocol) áá±á¬áºáááºááŒáá·áº ááááºáá»á¬ážááᯠááŒááºáá±ážááá·áº JavaScript ááœáẠá ááºážáááºááŸá¯áá»á¬áž áááºáá®ážááŒááºážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠá ááºážáááºááŒááºážá
- Red Hat Enterprise Linux (RHEL) 8 ááŸáá·áº Debian 2.28 ááŸáá·áº Ubuntu 10 á¡áá«á¡ááẠGlibc 20.04+ ááᯠá¡ááŒá±áá¶á á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ á ááºážáá±ážááœá²áá»á¬ážááŸáá·áº macOS 10.15+ á¡ááœáẠáá¶á·ááá¯ážáá±ážáá¬ážáááºá V8 á¡ááºáá»ááºáááºáá±á¬ááºááŸá¯ááœáẠááŒá¿áá¬áá»á¬ážááŒá±á¬áá·áº Windows á¡ááœáẠ32-bit áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá±áá¹ááááºááá·áºáá¬ážáááºá
- á áááºáá»áááºááœáẠá¡áá¯á¶ážááŒá¯áá°ááœá±ážáá»ááºáá¬ážáá±á¬ á¡á áááºá¡ááá¯ááºážáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ Node.js ááᯠáááºáá±á¬ááºááẠá ááºážáááºááœá±ážáá»ááºááŸá¯áá áºáᯠáá±ážáá¬ážáááºá á áááºááá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáááºááŸááºáááºá â--node-snapshot-mainâ option ááᯠconfigure build script ááœáẠááá·áºááœááºážáá¬ážááŒá®ážá á¥ááá¬á â./configure ânode-snapshot-main=marked.js; á¡áááºááŸááºá á¯"
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