JavaScript ááœáẠááœááºáááºá¡ááºááá®áá±ážááŸááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠááááºáá±á¬ááºážáá áºáá¯ááŒá áºááá·áº Node.js 20.0 ááᯠáá¯ááºáá±ááá¯ááºáá«áááºá Node.js 20.0 ááᯠááŸááºáá»á¬ážáá±á¬ áá¶á·ááá¯ážáá°áá®ááŸá¯áá¬áááœá²ááœáẠáá¬áááºáá±ážá¡ááºáá¬ážáá±á¬áºáááºáž áááºááŒáááºááŒá®ážáá±á¬áẠá¡á±á¬ááºááá¯áá¬áá¡áá á€á¡ááŒá±á¡áá±ááᯠáááºááŸááºáá±ážáááºááá¯ááºáá«á Node.js 20.x ááᯠ30 áá¯ááŸá Ạá§ááŒá®á 2026 áááºáá±á·á¡áá áá¶á·ááá¯ážáá±ážáá«áááºá áááẠNode.js 18.x LTS áá¬áááœá²ááᯠááŒá¯ááŒááºááááºážááááºážááŸá¯ááẠá§ááŒá®á 2025 á¡ááááŒá áºááŒá®áž áááẠ16.x LTS áá¬áááœá²ááẠá ááºáááºáᬠ2023 á¡áá ááŒá¬ááŒáá·áºáááºááŒá áºáááºá 14.x LTS áá¬áááœá²ááᯠá§ááŒá®á 30 áááºáá±á·ááœáẠááááºážááááºážáá¬ážáááºááŒá áºááŒá®áž Node.js 19.x ááŒá¬ážááŒááºáá¬áááœá²ááᯠááœááºá 1 áááºáá±á·ááœáẠáá¬ážááŸááááºááŒá áºáááºá
á¡ááá ááá¯ážáááºááŸá¯áá»á¬áž-
- V8 á¡ááºáá»ááºááᯠChromium 11.3 ááœááºá¡áá¯á¶ážááŒá¯ááá·áº áá¬ážááŸááºáž 113 ááá¯á· á¡ááºááááºáá¯ááºáá¬ážáá«áááºá Chromium 19 á¡ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯áá¬ážááá·áº Node.js 107 áá¬áááœá²ááŸáá·áº ááŸáá¯ááºážááŸááºáá¬ážáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá String.prototype.isWellFormed ááŸáá·áº toWellFormed áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá Array.prototype ááŸáá·áº TypedArray.prototype áááºážáááºážáá»á¬ážááẠArray ááŸáá·áº TypedArray á¡áá¬ááá¹áá¯áá»á¬ážá ááŒá±á¬ááºážáá²ááŸá¯ááœáẠáááá¹áá°ááŒáá·áºá¡áá¯ááºáá¯ááºáááºá RegExp ááŸá "v" á¡áá¶á ArrayBuffer ááá¯á¡ááœááºá¡á á¬ážááŒá±á¬ááºážáá²ááŒááºážááŸáá·áº SharedArrayBuffer áá¡ááœááºá¡á á¬ážááá¯ááá¯ážááŒáŸáá·áºááŒááºážá WebAssembly ááœáẠá¡ááŒá®ážáá±á«áºááá¯ááŸá¯ááŒáá·áºáá¯ááºáá±á¬ááºáááºá
- áá¯ááºáá±á¬ááºáá±á
ááºá¡ááœááºáž á¡áá»áá¯á·áá±á¬ á¡áááºážá¡ááŒá
áºáá»á¬ážááá¯á· áááºáá±á¬ááºááœáá·áºááᯠááá·áºáááºááẠááá·áºá¡á¬áž ááœáá·áºááŒá¯ááá·áº á
ááºážáááºááœáá·áºááŒá¯áá»ááºáá¯á¶á
ᶠááá¹ááá¬ážáá
áºáá¯ááᯠá¡ááá¯ááŒá¯áá¬ážáááºá áá¯ááºáá±á¬ááºáá±áá»áááºááœáẠ"--á
ááºážáááºááŸá¯-ááœáá·áºááŒá¯áá»ááº" á¡áá¶ááᯠáááºááŸááºááŒááºážááŒáá·áº ááœáá·áºááŒá¯áá»ááºáá¯á¶á
á¶áá¶á·ááá¯ážááŸá¯ááᯠááœáá·áºáá¬ážáááºá áááŠáž á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœááºá FS á á¡áá»áá¯á·áá±á¬á¡á
áááºá¡ááá¯ááºážáá»á¬ážááá¯á· á
á¬áá±ážááŒááºáž (--allow-fs-write) ááŸáá·áº (--allow-fs-read) áááºáá±á¬ááºááœáá·áºááᯠááá·áºáááºááẠááœá±ážáá»ááºááŸá¯áá»á¬ážááᯠá¡ááá¯ááŒá¯áá²á·áááºá á add-ons (--no-addons) ááŸáá·áº threads (--allow-worker)á á¥ááá¬á¡á¬ážááŒáá·áºá /tmp directory ááá¯á· á
á¬áá±ážááŒááºážááŸáá·áº /home/index.js ááá¯ááºááá¯áááºááŸá¯ááŒááºážá¡á¬áž ááœáá·áºááŒá¯áááºá áááºáááºááŸááºááá¯ááºáááº- node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js á¡ááœáŸááºáž .js
áááºáá±á¬ááºááŒáá·áºááŸá¯á á áºáá±ážáááºá process.permission.has() áááºážáááºážá á¥ááá¬á "process.permission.has('fs.write',"/tmp/test") ááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá
- "--experimental-loader" ááœá±ážáá»ááºááŸá¯ááŸáá áºááá·áº áááºáá¬ážáá±á¬ ECMAScript ááŒááºá modules (ESMs) á¡ááœáẠááá¯ááºááœááºáá°áá»á¬ážááᯠááá¯á¡áá»áááºááœáẠáááºáááŒáá¯ážá០áá®ážááŒá¬ážááœá²áá¯ááºáá¬ážááŒá®ážá á¡ááºááá®áá±ážááŸááºážáá¯ááºáá»á¬ážááŸáá·áº áááºáá¬ážáá±á¬ ESM áá±á¬áºáá»á°ážáá»á¬ážááᯠáááºááŸá¬ážáá±ážáá«áááºá ááá±á¬ááºáá¬áá»á¬ážáá²á·ááá¯á·áááºá import.meta.resolve() áááºážáááºážááẠááá¯á¡áá« á¡ááá®áá±ážááŸááºážáá áºáá¯á¡ááœááºážá០áá±á«áºáá±á¬á¡áá« áá áºááŒáá¯ááºáááºáá¯ááºáá±á¬ááºáá«áááºá Node.js ááá±á¬ááºáááºá¡ááœá²áá áºáá¯ááœááºá ESM loading áá¶á·ááá¯ážááŸá¯á¡á¬áž áááºááŒáááºáá±á¬á¡ááºá¹áá«áááºáá»á¬ážá¡áá»áá¯ážá¡á á¬ážááá¯á· ááœáŸá±á·ááẠá á®á ááºáá¬ážáááºá
- TAP (Test Anything Protocol) áá±á¬áºáááºááœáẠááááºáá»á¬áž ááŒááºáá±ážááá·áº JavaScript á ááºážáááºááŸá¯áá»á¬ážááᯠáááºáá®ážááŒá®áž áá¯ááºáá±á¬ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážááá·áº áá¯ááº-test (test_runner) áá±á¬áºáá»á°ážááᯠáááºááŒáááºááá·áºá¡ááŒá áºááá¯á· ááœáŸá±á·áá¬ážáááºá
- áá¬áááœá²á¡áá áºá¡ááœáẠááŒááºáááºááŸá¯á¡áá±ááŒáá·áº URL ááœá²ááŒááºážá áááºááŒá¬ááŒááºážá fetch() ááŸáá·áº EventTarget á¡áá«á¡ááẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ runtime á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠá¡ááŸáááºááŒáŸáá·áºáááºá¡ááœáẠáá®ážááŒá¬ážá áœááºážáá±á¬ááºáááºá¡ááœá²á·áá áºáá¯ááᯠááœá²á·á ááºážáá¬ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá EventTarget ááᯠá¡á ááŒá¯ááŒááºážá á¡áá±á«áºá á®ážá áááºáááºááᯠáá»áŸá±á¬á·áá»ááá¯ááºáááºá URL.canParse() áááºážáááºážá á áœááºážáá±á¬ááºáááºááᯠáááá¬áááºááŸá¬ážá áœá¬ ááŒáŸáá·áºáááºáá¬ážááŒá®áž á¡áá»áááºááá¯ááºážáá¬áá»á¬ážá á áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá¬ážáááºá ááá¯á·á¡ááŒááºá C++ ááŒáá·áºáá±ážáá¬ážáá¬ážáá±á¬ á áœááºážáá±á¬ááºáááºááŒáá·áº URL parser - Ada 2.0 ááᯠáá¯ááºáá±ááŸá¯ááœáẠáá«áááºáá«áááºá
- áá áºáá¯áááºážáá±á¬ executable file (SEAá Single Executable Applications) áá¯á¶á á¶ááŒáá·áº á¡ááá®áá±ážááŸááºážáá»á¬áž áá±ážááá¯á·ááŒááºážá¡ááœáẠá ááºážáááºááŸá¯á¡ááºá¹áá«áááºááᯠáááºáááºáá±á¬áºáá±á¬ááºáá±áá«áááºá ááᯠexecutable ááá¯áááºáá®ážááŒááºážááẠJSON configuration file ( JavaScript ááá¯ááºááá¯á¡á á¬ážááá¯ážááá·áºá¡á á¬áž) ááŸáá¯ááºáá±ážáá±á¬ blob ááá¯á¡á á¬ážááá¯ážáááºááá¯á¡ááºáááºá
- á¡ááŒá¬ážááá±á¬áá»ááºáá»á¬ážá០á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááŸáá·áº Web Crypto API ááá¯ááºáááºááŸá¯ááᯠááŒáŸáá·áºáááºáá¬ážáááºá
- ARM64 á áá áºáá»á¬ážááœáẠWindows á¡ááœááºááá¬ážáááºáá¶á·ááá¯ážááŸá¯áááºáá±á¬ááºážá
- áá®ážááŒá¬áž WebAssembly á¡ááá®áá±ážááŸááºážáá»á¬ážáááºáá®ážáááºá¡ááœáẠWASI (WebAssembly System Interface) ááá¯ážáá»á²á·ááŸá¯áá»á¬ážááᯠáááºáááºáá¶á·ááá¯ážáá±ážáááºá WASI áá¶á·ááá¯ážááŸá¯ááá¯ááœáá·áºááẠá¡áá°ážá¡áááá·áºáá±á¬áºááá¯ááºážá¡áá¶áááºááŸááºááẠááá¯á¡ááºááŸá¯ááᯠáááºááŸá¬ážáá²á·áááºá
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