Node.js 16.0 ááẠJavaScript ááœáẠááœááºáááºá¡ááºááá®áá±ážááŸááºážáá»á¬áž áá¯ááºáá±á¬ááºáááºá¡ááœáẠááááºáá±á¬ááºážáá áºáá¯ááŒá áºáááºá Node.js 16.0 ááᯠáá±ááŸááºáá¶á·ááá¯ážáá°áá®ááŸá¯áá¬áááœá²áá áºáá¯á¡ááŒá ẠáááºááŸááºáá¬ážáá±á¬áºáááºáž áááºááŒáááºááŒá®ážáá±á¬áẠá¡á±á¬ááºááá¯áá¬áááœááºáᬠá€á¡ááŒá±á¡áá±ááᯠáááºááŸááºáá±ážáááºááŒá áºáááºá Node.js 16.0 ááᯠ2023 á§ááŒá®áá¡áá áá¶á·ááá¯ážáá±ážáá«áááºá Node.js 14.0 á áááẠLTS áá¬áááœá²ááᯠááŒá¯ááŒááºááááºážááááºážááŸá¯ááẠá§ááŒá®á 2023 á¡áá ááŒá¬ááŒáá·áºáááºááŒá áºááŒá®áž áá±á¬ááºáá¯á¶áž LTS áá¬áááœá² 12.0 áááá¯ááºáá® 2022 áá¯ááŸá Ạá§ááŒá®áá¡áá ááŒá áºáááºá 10.0 LTS áá¬áááœá²á¡ááœáẠáá¶á·ááá¯ážááŸá¯ 10 áááºá¡ááœááºáž áááºááá¯ááºážááœá¬ážáá«áááºá
á¡ááá ááá¯ážáááºááŸá¯áá»á¬áž-
- V8 á¡ááºáá»ááºááᯠáá¬ážááŸááºáž 9.0 (Node.js 15 á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áá¬ážááŸááºáž 8.6) ááá¯á· á¡ááºááááºáá¯ááºáá¬ážááŒá®áž áá¯á¶ááŸááºáá±á¬áºááŒáá»ááºáá»á¬ážá¡ááœáẠâindicesâ ááá¯ááºááá¯ááºááŸá¯áá²á·ááá¯á·áá±á¬ á¡ááºá¹áá«áááºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºá á±ááá·áº (ááœá²á ááºáá»á¬ážá á¡á ááŸáá·áºá¡áá¯á¶ážáá±áá¬áá»á¬ážáá«ááŸááá±á¬ array áá áºáá¯áá«áááºáááº) Node.js 16 ááŸá Atomics áááºážáááºáž .waitAsync (Atomics.wait á async áá¬ážááŸááºáž)á ááááºáááºážá¡ááá·áº áá±á¬áºáá»á°ážáá»á¬ážááœáẠá á±á¬áá·áºáá±áá±á¬áá±á¬á·áá»ááºá áá¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯á áá¯ááºáá±á¬ááºáá»ááºá¡ááœááºáž áááºááŸááºáá¬ážáá±á¬ ááá·áºáááºáá±á¬ááºáá»á¬ážááŸáá·áº áááá¯ááºáá®ááá·áº á¡ááŒááºážá¡áá¯á¶á¡áá±á¡ááœááºáá»á¬áž áááá¯ááºáá®ááá·áº á¡ááŒá±á¡áá±áá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯áá»á¬ážááᯠá¡ááŸáááºááŒáŸáá·áºáá¬ážáááºá
- Timers Promises API ááᯠáááºááŒáááºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážááŒá®áž util.promisify() ááá¯á¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºááŸá¯ááᯠáááºááŸá¬ážáá±ážááá·áº á¡áá»áááºááá¯ááºážáááááá¬áá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡ááŒá¬ážáá¯ááºáá±á¬ááºáá»ááºá¡á á¯á¶ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá 'ááá¯ááºáá¬/ááááá»á¬áž' á០{ setTimeout } ááᯠáááºááœááºážáá«á async áá¯ááºáá±á¬ááºáá»áẠrun() { á á±á¬áá·áºááá¯ááºážááẠsetTimeout(5000); console.log('áááºá¹ááá¬áá« ááá¹áá¬!'); } run();
- Web Crypto API á á ááºážáááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá·áºááœááºážáá¬ážááŒá®ážá áááºá¡ááºááºáá®áá±ážááŸááºážáá»á¬ážáááºá០á¡ááŒá±áᶠáá¯ááºááŸááºááŒááºážááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®ážá áá¯ááºááŸááºáááºá¹áá±ááá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºážá áá áºáá»á áºáááºáááºááŸááºáá»á¬ážááᯠáá¯ááºáá¯ááºááŒááºážááŸáá·áº á¡áááºááŒá¯ááŒááºážá áá¯ááºááŸááºááŒááºážáááºážáááºážá¡áá»áá¯ážáá»áá¯ážááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºááŸááºááŒááºážááŸáá·áº áá¯ááºáá±á¬áºááŒááºážáááºážáááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áᬠáá»áŸáá¯á·ááŸááºáááºá¹áá±áááŒáá·áº áá¯á¶ááŒá¯á¶á¡á±á¬ááºááŒá¯áá¯ááºááŒááºážáá²á·ááá¯á·áá±á¬á áá»áááºážáá¶áá«ááºáá»á¬ážá API ááẠáá±á¬á·áá»á¬ážááᯠáá¯ááºáá¯ááºááŒááºážááŸáá·áº á á®áá¶ááá·áºááœá²ááŒááºážá¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯áááºáž áá¶á·ááá¯ážáá±ážáá«áááºá
- N-API (API á¡ááá¯áááá¯ááááºáá»á¬áž áá®ááœááºáá¯ááºáá¯ááºáááº) ááᯠáá¬ážááŸááºáž 8 ááá¯á· á¡ááºááááºáá¯ááºáá¬ážáááºá
- áááºáá±á·áá»áºáááºáá±áá»á¬ NPM 7.10 á á¡áá áºááœááºááŸáááŸá¯ááá¯á· áá°ážááŒá±á¬ááºážááŸá¯ááᯠááŒá¯áá¯ááºáá¬ážáá«áááºá
- AbortController Web API ááᯠá¡ááŒá±áá¶áá¬ážááá·áº AbortController á¡áááºážá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠáááºááŒáááºá á±ááŒá®áž ááœá±ážáá»ááºáá¬ážáá±á¬ Promise-based APIs áá»á¬ážááœáẠá¡áá»ááºááŒááŸá¯áá»á¬ážááᯠáááºáá»ááºááá¯ááºáááºá
- áá°áááºážá¡áááºážá¡ááŒá áºáá¯ááºááŸáá·áº áá¯ááºáá¯ááºááá¯ááºáá±á¬á á á®áá¶áá±á¬ááºááœááºáá¬ážáá±á¬ ááá¯á·ááá¯áẠáá¯ááºááá¯ážáá¬ážáá±á¬ áá±á¬áºáá»á°ážáá»á¬ážááᯠááŸáá¯ááºážááŸááºááẠá¡áá¯á¶ážááŒá¯ááá·áº á¡áááºážá¡ááŒá áºááŒá±áá¯á¶áá±á¬áºáááºá áááááá¬ážááŸááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŸá¬ áááºááŒáááºááœá¬ážáá«áááºá
- á¡ááœá±á¡ááŸá ẠááẠAPI áá»á¬ážááŸáá·áº ááá¯ááºáá®ááŸá¯ááŸáá á±áááºá¡ááœááºá buffer.atob(data) ááŸáá·áº buffer.btoa(data) áááºážáááºážáá»á¬ážááᯠááá·áºááœááºážáá¬ážáá«áááºá
- M1 ARM áá»á áºááºáá«ááŸááá±á¬ Apple á ááºáá á¹á ááºážá¡áá áºáá»á¬ážá¡ááœáẠá ááºážáá±ážááœá²áá»á¬ážááœá²á·á ááºážááŒááºážááᯠá áááºáá±ááŒá®ááŒá áºáááºá
- Linux ááááºáá±á¬ááºážááœááºá compiler áá¬ážááŸááºážááá¯á¡ááºáá»ááºáá»á¬ážááᯠGCC 8.3 ááá¯á·ááŒáŸáá·áºáááºáá¬ážáááºá
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});" ááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºá áááºážááœáẠááááºážáá»á¯ááºááŸá¯ááẠáá±á¬ááºáááºáá¯ááºááá¯á· áá»ááºáá»ááºážáá±á¬ááºááœá¬ážáááºááŒá áºááŒá®ážá áá±áá¬áá±á¬ááºááŸááááºááŸáá·áº áá±ážááŒááºážáá»ááºááááºááᯠá á®áá¶áá±á¬ááºááœááºáááºááŒá áºáááºá
ááá¯á·á¡ááŒááºá áá»áá¯ážáááºáá
ẠDeno ááááºáá±á¬ááºážááᯠáá®ááœááºáááºá¡ááœáẠNode.js áááºáá®ážáá°á០áááºáá±á¬ááºáá¬ážáá±á¬ Deno áá¯áá¹ááá®ááẠáááºážááŸá®ážááŒáŸá¯ááºááŸá¶ááŸá¯ááœáẠáá±á«áºáᬠ4.9 áááºáž áááŸááá¬ážááŒá±á¬ááºáž ááŸááºáá¬ážááá¯ááºáá«áááºá áááºážááááºááœááºáá»ááºááœááºá Deno ááẠNode.js ááŸáá·áºáááºáá°áá±á¬áºáááºáž Node.js áááá¯áá¬ááœááºááŒá¯áá¯ááºáá¬ážáá±á¬ á¡áá°á¡áá¡ááŸá¬ážáá»á¬ážááᯠáááºááŸá¬ážáááºááŸáá·áº á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡á¬áž ááá¯ááá¯áá¯á¶ááŒá¯á¶áá±á¬áááºáááºážáá»ááºááᯠáá±ážáá±á¬ááºááẠááŒáá¯ážá
á¬ážáááºá Deno á áá¯ááºáááºážááŒá±ááŸááºážáá»ááºáá»á¬ážá¡á¬áž áá¯á¶ážáááœáá·áºáá¬ážáá±á¬ áá¯ááºáá¯ááºáá»á¬ážáá±á«áºááœáẠáááºáá±á¬ááºáá¬ážáááºááŒá
áºááŒá®áž áá®ážááŒá¬ážá¡ááá±ážáá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááŸááá±á¬ Open Core áá±á¬áºáááºááᯠDeno ááááºáá±á¬ááºážá¡ááœáẠáááºááá¶ááá¯ááºáᯠáá°ááá«áááºá
source: opennet.ru