αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ JavaScript Node.js 17.0 αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ

Node.js 17.0 αžŠαŸ‚αž›αž‡αžΆαžœαŸαž‘αž·αž€αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžŽαŸ’αžαžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ” Node.js 17.0 αž‚αžΊαž‡αžΆαžŸαžΆαžαžΆαž‡αŸ†αž“αž½αž™αž’αž˜αŸ’αž˜αžαžΆ αžŠαŸ‚αž›αž“αžΉαž„αž”αž“αŸ’αžαž‘αž‘αž½αž›αž”αžΆαž“αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžšαž αžΌαžαžŠαž›αŸ‹αžαŸ‚αž˜αž·αžαž»αž“αžΆ αž†αŸ’αž“αžΆαŸ† 2022αŸ” αž“αŸ…αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžαŸ’αž„αŸƒαžαžΆαž„αž˜αž»αžαž“αŸαŸ‡ αžŸαŸ’αžαŸαžšαž—αžΆαž–αž“αŸƒαžŸαžΆαžαžΆ Node.js 16 αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αžŠαŸ‚αž›αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž– LTS β€‹β€‹αž αžΎαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžšαž αžΌαžαžŠαž›αŸ‹αžαŸ‚αž˜αŸαžŸαžΆ αž†αŸ’αž“αžΆαŸ† 2024αŸ” αž€αžΆαžšαžαŸ‚αžšαž€αŸ’αžŸαžΆαžŸαžΆαžαžΆ LTS αž˜αž»αž“αž“αŸƒ Node.js 14.0 αž“αžΉαž„αž˜αžΆαž“αžšαž™αŸˆαž–αŸαž›αžšαž αžΌαžαžŠαž›αŸ‹αžαŸ‚αž˜αŸαžŸαžΆ αž†αŸ’αž“αžΆαŸ† 2023 αž αžΎαž™αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αžŸαžΆαžαžΆ LTS αž…αž»αž„αž€αŸ’αžšαŸ„αž™ 12.0 αžšαž αžΌαžαžŠαž›αŸ‹αžαŸ‚αž˜αŸαžŸαžΆ αž†αŸ’αž“αžΆαŸ† 2022αŸ”

αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  • αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ V8 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αŸ…αž€αŸ†αžŽαŸ‚ 9.5 αŸ”
  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžœαŸ‰αžΆαžšαŸ’αž™αŸ‰αž„αŸ‹αž“αŸƒ API αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš Promise asynchronous αž”αžΆαž“αž”αž“αŸ’αžαŸ” αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Timers Promises and Stream Promises APIs αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž–αžΈαž˜αž»αž“ Node.js 17.0 αžŽαŸ‚αž“αžΆαŸ† Readline Promise API αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαžΆαž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αŸ‰αžΌαžŒαž»αž›αž’αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ” αž“αžΆαŸ†αž…αžΌαž› * αž‡αžΆ readline αž–αžΈ 'node:readline/promises'; αž“αžΆαŸ†αž…αžΌαž› { stdin as input, stdout as output } αž–αžΈ 'process'; const rl = readline.createInterface({ input, output }); const answer = αžšαž„αŸ‹αž…αžΆαŸ† rl.question('αžαžΎαž’αŸ’αž“αž€αž‚αž·αžαž™αŸ‰αžΆαž„αžŽαžΆαž…αŸ†αž–αŸ„αŸ‡ Node.js?'); console.log('αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ– ${answer}'); rl.close();
  • αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ OpenSSL αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž‚αžαŸ‹αž•αŸ’αž‚αž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž”αŸ‹αžŠαŸαžαž‘αŸ…αž€αŸ†αžŽαŸ‚ 3.0 (αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ quictls/openssl αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž–αž·αž’αžΈαž€αžΆαžš QUIC αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹)αŸ”
  • αž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαŸ‚ Node.js αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αž‡αž„αŸ‹αžŠαžΆαž“αžŠαŸ‚αž›αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αŸ†αž αž»αžŸαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž…αž”αŸ‹αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž…αŸ†αž“αž½αž“αž–αžΈαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžαžΆαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžšαž”αžŸαŸ‹ Node.js (CVE-2021-22959, CVE-2021-22960) αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš β€œHTTP Request Smuggling” (HRS) αžŠαŸ‚αž› αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž“αŸƒαžŸαŸ†αžŽαžΎαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžŠαžΌαž…αž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αž»αž αž“αž·αž„αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž™ (αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΌαžŠ JavaScript αž–αŸ’αž™αžΆαž”αžΆαž‘αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαž‚αŸ’αž‚αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž•αŸ’αžŸαŸαž„αž‘αŸ€αž)αŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαžΉαž„αžαžΆαž”αž‰αŸ’αž αžΆαž‚αžΊαž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž…αž“αŸ’αž›αŸ„αŸ‡αžšαžœαžΆαž„αžˆαŸ’αž˜αŸ„αŸ‡ HTTP header αž“αž·αž„ colon αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒ carriage return αž“αž·αž„ line feed character αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž‡αžΌαž“αŸ” αžαž½αžŸαŸ†αžŽαžΎαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” "αž€αŸ†αžŽαžΆαžαŸ‹" "

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αžšαŸ†αž›αžΉαž€αžαžΆαžœαŸαž‘αž·αž€αžΆ Node.js αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‘αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžš αž“αž·αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžŽαŸ’αžαžΆαž‰αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αž˜αŸ’αž˜αžαžΆαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΈαž€αž˜αž»αžαž„αžΆαžšαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Node.js αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸαž’αŸ†αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ† αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αŸ‰αžΌαžŒαž»αž›αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž HTTP, SMTP, XMPP, DNS, FTP, IMAP, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ POP3 αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αž˜αŸ‰αžΌαžŒαž»αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž”αžŽαŸ’αžŠαžΆαž‰αž•αŸ’αžŸαŸαž„αŸ— WebSocket αž“αž·αž„ Ajax handlers αž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… DBMS (MySQL, PostgreSQL, SQLite, MongoDB), αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‚αŸ†αžšαžΌ, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ CSS, αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‚αŸ’αžšαžΈαž” αž“αž·αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž“αž»αž‰αŸ’αž‰αžΆαž (OAuth), αž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€ XML αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαž”αžΆαž“αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαžŸαŸ†αžŽαžΎαžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ† Node.js αž”αŸ’αžšαžΎαž‚αŸ†αžšαžΌαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαž’αžŸαž˜αž€αžΆαž›αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž˜αž·αž“αžšαžΆαžšαžΆαŸ†αž„ αž“αž·αž„αž“αž·αž™αž˜αž“αŸαž™αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž αŸ…αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž–αž αž»αž‚αž»αžŽαž‚αžΊ epoll, kqueue, /dev/poll αž“αž·αž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž–αž αž»αž‚αž»αžŽ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ libuv αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αžŠαŸ‚αž›αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ libev αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ Unix αž“αž·αž„ IOCP αž“αŸ…αž›αžΎ Windows αŸ” αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ libeio αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžαž»αŸ†αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™ αž αžΎαž™ c-ares αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžŸαŸ†αžŽαž½αžš DNS αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž˜αž·αž“αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αŸ” αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαž»αŸ†αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžŠαžΌαž…αž‡αžΆαž§αž”αž€αžšαžŽαŸαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž‰αŸ’αž‰αžΆ αž•αŸ’αž‘αŸαžšαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž˜αž€αžœαž·αž‰αžαžΆαž˜αžšαž™αŸˆαž”αŸ†αž–αž„αŸ‹αžŠαŸ‚αž›αž‚αŸ’αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ (αž”αŸ†αž–αž„αŸ‹)αŸ” αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠ JavaScript αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ V8 αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™ Google (αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž Microsoft αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαž€αŸ†αžŽαŸ‚ Node.js αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Chakra-Core)αŸ”

αž“αŸ…αžŸαŸ’αž“αžΌαž›αžšαž”αžŸαŸ‹αžœαžΆ Node.js αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ Tcl αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ Node.js αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αžΆαž€αŸ‹αž–αžΈαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž αžΎαž™αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αŸ” αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ node.js αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž–αž·αž…αžΆαžšαžŽαžΆαž–αžΈαž—αžΆαž–αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž‡αŸ†αžšαž»αž‰αžŠαŸ„αž™αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ αž§αž‘αžΆαž αžšαžŽαŸ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž’αŸ’αžœαžΎ "var result = db.query("select..");" αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžšαž„αŸ‹αž…αžΆαŸ†αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž„αžΆαžš αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ Node.js αž”αŸ’αžšαžΎαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž’αžŸαž˜αž€αžΆαž› αž–αŸ„αž›αž‚αžΊαž§αŸ” αž€αžΌαžŠαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆ "db.query("select..", function (result) {result processing});" αžŠαŸ‚αž›αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž“αžΉαž„αž”αž‰αŸ’αž‡αžΌαž“αž—αŸ’αž›αžΆαž˜αŸ—αž‘αŸ…αž€αžΆαž“αŸ‹αž›αŸαžαž€αžΌαžŠαž”αž“αŸ’αžαŸ‚αž˜ αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αžŸαŸ†αžŽαž½αžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž€αžŠαž›αŸ‹αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹