ืžื”ื“ื•ืจืช JavaScript ื‘ืฆื“ ื”ืฉืจืช Node.js 13.0

ื–ืžื™ืŸ ืฉื—ืจื•ืจ Node.js 13.0,ืคืœื˜ืคื•ืจืžื•ืช ืœื”ืคืขืœืช ื™ื™ืฉื•ืžื™ ืจืฉืช ื‘-JavaScript. ื‘ืžืงื‘ื™ืœ, ื”ื•ืฉืœืžื” ื”ืชื™ื™ืฆื‘ื•ืช ื”ืกื ื™ืฃ ื”ืงื•ื“ื ืฉืœ Node.js 12.x, ืืฉืจ ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื™ืช ืžื”ื“ื•ืจื•ืช ืชืžื™ื›ื” ืืจื•ื›ื•ืช ื˜ื•ื•ื—, ืืฉืจ ืขื“ื›ื•ื ื™ื ืขื‘ื•ืจื ืžืฉื•ื—ืจืจื™ื ืœืžืฉืš 4 ืฉื ื™ื. ื”ืชืžื™ื›ื” ื‘ืกื ื™ืฃ ื”-LTS ื”ืงื•ื“ื ืฉืœ Node.js 10.0 ืชื™ืžืฉืš ืขื“ ืืคืจื™ืœ 2021, ื•ืชืžื™ื›ื” ื‘ืกื ื™ืฃ ื”-LTS ื”ืื—ืจื•ืŸ 8.0 ืขื“ ื™ื ื•ืืจ 2020.

ื”ืขื™ืงืจื™ ืฉื™ืคื•ืจื™ื:

  • ืžื ื•ืข V8 ืขื•ื“ื›ืŸ ืœื’ืจืกื” 7.8, ื”ืžืฉืชืžืฉ ื‘ื˜ื›ื ื™ืงื•ืช ื—ื“ืฉื•ืช ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื‘ื™ืฆื•ืขื™ื, ืžืฉืคืจ ืืช ืคื™ืจื•ืง ื”ืื•ื‘ื™ื™ืงื˜ื™ื, ืžืคื—ื™ืช ืืช ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ื•ืžืฆืžืฆื ืืช ื–ืžืŸ ื”ื”ื›ื ื” ืœื‘ื™ืฆื•ืข WebAssembly;
  • ืชืžื™ื›ื” ืžืœืื” ื‘ื‘ื™ื ืœืื•ืžื™ื–ืฆื™ื” ื•ื‘-Unicode ืžื‘ื•ืกืก ืกืคืจื™ื•ืช ืžื•ืคืขืœืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื”ืžื—ืœืงื” ืœื˜ื™ืคื•ืœ ื ืžืจืฅ (International Components for Unicode), ื”ืžืืคืฉืจ ืœืžืคืชื—ื™ื ืœื›ืชื•ื‘ ืงื•ื“ ืชื•ืžืš ืœืขื‘ื•ื“ ืขื ืฉืคื•ืช ื•ืžืงื•ืžื•ื ื™ื ืฉื•ื ื™ื. ืžื•ื“ื•ืœ ื”-icu ื”ืžืœื ืžื•ืชืงืŸ ื›ืขืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ;
  • API ื”ืชื™ื™ืฆื‘ ื—ื•ื˜ื™ ืขื•ื‘ื“ื™ื, ืžึฐืึทืคืฉืึถืจ ืœื™ืฆื•ืจ ืœื•ืœืื•ืช ืื™ืจื•ืขื™ื ืžืจื•ื‘ื™ ื—ื•ื˜ื™ื. ื”ื”ื˜ืžืขื” ืžื‘ื•ืกืกืช ืขืœ ืžื•ื“ื•ืœ worker_threads, ื”ืžืืคืฉืจ ืœื”ืจื™ืฅ ืงื•ื“ JavaScript ื‘ืžืกืคืจ ืฉืจืฉื•ืจื™ื ืžืงื‘ื™ืœื™ื. ืชืžื™ื›ื” ื™ืฆื™ื‘ื” ืขื‘ื•ืจ Workers Threads API ื”ื•ืขื‘ืจื” ื’ื ืœืกื ื™ืฃ LTS ืฉืœ Node.js 12.x;
  • ื”ื“ืจื™ืฉื•ืช ืœืคืœื˜ืคื•ืจืžื•ืช ื”ื•ื’ื“ืœื•. ืœื”ืจื›ื‘ื” ืขื›ืฉื™ื• ื ื“ืจืฉ ืœืคื—ื•ืช macOS 10.11 (ื“ื•ืจืฉ Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • ืชืžื™ื›ื” ืžืฉื•ืคืจืช ื‘-Python 3. ืื ืœืžืขืจื›ืช ื™ืฉ ื’ื Python 2 ื•ื’ื Python 3, ืขื“ื™ื™ืŸ ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-Python 2, ืืš ื ื•ืกืคื” ื”ื™ื›ื•ืœืช ืœื‘ื ื•ืช ื›ืืฉืจ ืจืง Python 3 ืžื•ืชืงืŸ ื‘ืžืขืจื›ืช;
  • ื”ื™ื™ืฉื•ื ื”ื™ืฉืŸ ืฉืœ ืžื ืชื— HTTP ("โ€”http-parser=legacy") ื”ื•ืกืจ. ื”ื•ืกืจื• ืื• ื”ื•ืฆืื• ืžืฉื™ืžื•ืฉ ืงืจื™ืื•ืช ื•ืžืืคื™ื™ื ื™ื FSWatcher.prototype.start(), ChildProcess._channel, ืฉื™ื˜ืช open() ื‘ืื•ื‘ื™ื™ืงื˜ื™ื ReadStream ื•-WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • ื”ื‘ื ื™ืฆื ืขื“ื›ื•ืŸ 13.0.1, ืฉืชื™ืงืŸ ื‘ืžื”ื™ืจื•ืช ืžืกืคืจ ื‘ืื’ื™ื. ื‘ืคืจื˜, ื”ื‘ืขื™ื” ืขื npm 6.12.0 ื”ืžืฆื™ื’ ืื–ื”ืจื” ืœื’ื‘ื™ ืฉื™ืžื•ืฉ ื‘ื’ืจืกื” ืœื ื ืชืžื›ืช ื ืคืชืจื”.

ื ื–ื›ื™ืจ ื›ื™ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืคืœื˜ืคื•ืจืžืช Node.js ื”ืŸ ืœืชืžื™ื›ื” ื‘ืฆื“ ื”ืฉืจืช ืฉืœ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ื•ื”ืŸ ืœื™ืฆื™ืจืช ืชื•ื›ื ื™ื•ืช ืจืฉืช ืจื’ื™ืœื•ืช ืฉืœ ืœืงื•ื— ื•ืฉืจืช. ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ื™ื™ืฉื•ืžื™ื ืขื‘ื•ืจ Node.js, ืžืกืคืจ ืจื‘ ืฉืœ ืื•ืกืฃ ืฉืœ ืžื•ื“ื•ืœื™ื, ื‘ื• ื ื™ืชืŸ ืœืžืฆื•ื ืžื•ื“ื•ืœื™ื ืขื ื”ื˜ืžืขืช ืฉืจืชื™ื ื•ืœืงื•ื—ื•ืช HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, ืžื•ื“ื•ืœื™ื ืœืฉื™ืœื•ื‘ ืขื ืžืกื’ืจื•ืช ืื™ื ื˜ืจื ื˜ ืฉื•ื ื•ืช, ืžื˜ืคืœื™ WebSocket ื•-Ajax, ืžื—ื‘ืจื™ื ืœ-DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), ืžื ื•ืขื™ ืชื‘ื ื™ืช, ืžื ื•ืขื™ CSS, ื”ื˜ืžืขื•ืช ืฉืœ ืืœื’ื•ืจื™ืชืžื™ื ืงืจื™ืคื˜ื•ื’ืจืคื™ื™ื ื•ืžืขืจื›ื•ืช ื”ืจืฉืื” (OAuth), ืžื ืชื—ื™ XML.

ื›ื“ื™ ืœื˜ืคืœ ื‘ืžืกืคืจื™ื ื’ื“ื•ืœื™ื ืฉืœ ื‘ืงืฉื•ืช ืžืงื‘ื™ืœื•ืช, Node.js ืžืฉืชืžืฉ ื‘ืžื•ื“ืœ ื‘ื™ืฆื•ืข ืงื•ื“ ืืกื™ื ื›ืจื•ื ื™ ื”ืžื‘ื•ืกืก ืขืœ ืขื™ื‘ื•ื“ ืื™ืจื•ืขื™ื ืœื ื—ื•ืกื ื•ื”ื’ื“ืจืช ืžื˜ืคืœื™ื ืœื”ืชืงืฉืจื•ืช ื—ื•ื–ืจืช. ืฉื™ื˜ื•ืช ื ืชืžื›ื•ืช ืœืจื™ื‘ื•ื™ ื—ื™ื‘ื•ืจื™ื ื›ื•ืœืœื•ืช epoll, kqueue, /dev/poll ื•-select. ื”ืกืคืจื™ื™ื” ืžืฉืžืฉืช ืœืจื™ื‘ื•ื™ ื—ื™ื‘ื•ืจื™ื ืœื™ื‘ื•ื‘, ืฉื”ื•ื ืžื‘ื ื” ืขืœ ืžืขืœ ืœื™ื‘ื‘ ื‘ืžืขืจื›ื•ืช Unix ื•ืžืขืœ IOCP ื‘-Windows. ืกืคืจื™ื™ื” ืžืฉืžืฉืช ืœื™ืฆื™ืจืช ืžืื’ืจ ืฉืจืฉื•ืจื™ื ืœื™ื‘ื™ื•, ืœื‘ื™ืฆื•ืข ืฉืื™ืœืชื•ืช DNS ื‘ืžืฆื‘ ืœื ื—ื•ืกื ืžืฉื•ืœื‘ c-ares. ื›ืœ ืงืจื™ืื•ืช ื”ืžืขืจื›ืช ืฉื’ื•ืจืžื•ืช ืœื—ืกื™ืžื” ืžื‘ื•ืฆืขื•ืช ื‘ืชื•ืš ืžืื’ืจ ื”ืฉืจืฉื•ืจื™ื ื•ืื–, ื›ืžื• ืžื˜ืคืœื™ ืื•ืชื•ืช, ืžืขื‘ื™ืจื•ืช ืืช ืชื•ืฆืืช ื”ืขื‘ื•ื“ื” ืฉืœื”ื ื‘ื—ื–ืจื” ื“ืจืš ืฆื™ื ื•ืจ ืœืœื ืฉื. ื‘ื™ืฆื•ืข ืงื•ื“ JavaScript ืžื•ื‘ื˜ื— ื‘ืืžืฆืขื•ืช ืฉื™ืžื•ืฉ ื‘ืžื ื•ืข ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ื’ื•ื’ืœ V8 (ื‘ื ื•ืกืฃ, ืžื™ืงืจื•ืกื•ืคื˜ ืžืคืชื—ืช ื’ืจืกื” ืฉืœ Node.js ืขื ืžื ื•ืข Chakra-Core).

ื‘ื‘ืกื™ืกื•, Node.js ื“ื•ืžื” ืœืžืกื’ืจื•ืช Perl AnyEvent, ืจื•ื‘ื™ ืžื›ื•ื ืช ืื™ืจื•ืขื™ื, Python Twisted ะธ ื™ื™ืฉื•ื ืื™ืจื•ืขื™ื ื‘-Tcl, ืืš ืœื•ืœืืช ื”ืื™ืจื•ืขื™ื ื‘-Node.js ืžื•ืกืชืจืช ืžื”ืžืคืชื— ื•ื“ื•ืžื” ืœื˜ื™ืคื•ืœ ื‘ืื™ืจื•ืขื™ื ื‘ืืคืœื™ืงืฆื™ื™ืช ืื™ื ื˜ืจื ื˜ ื”ืคื•ืขืœืช ื‘ื“ืคื“ืคืŸ. ื‘ืขืช ื›ืชื™ื‘ืช ื™ื™ืฉื•ืžื™ื ืขื‘ื•ืจ node.js, ื™ืฉ ืฆื•ืจืš ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืืช ื”ืคืจื˜ื™ื ื”ืกืคืฆื™ืคื™ื™ื ืฉืœ ืชื›ื ื•ืช ืžื•ื ื—ื” ืื™ืจื•ืขื™ื, ืœืžืฉืœ, ื‘ืžืงื•ื ืœืขืฉื•ืช "var result = db.query("select..");" ืขื ื”ืžืชื ื” ืœื”ืฉืœืžืช ื”ืขื‘ื•ื“ื” ื•ืขื™ื‘ื•ื“ ืฉืœืื—ืจ ืžื›ืŸ ืฉืœ ื”ืชื•ืฆืื•ืช, Node.js ืžืฉืชืžืฉ ื‘ืขื™ืงืจื•ืŸ ืฉืœ ื‘ื™ืฆื•ืข ืืกื™ื ื›ืจื•ื ื™, ื›ืœื•ืžืจ. ื”ืงื•ื“ ื”ื•ืคืš ืœ- "db.query("select..", function (result) {Result processing});", ืฉื‘ื• ื”ืฉืœื™ื˜ื” ืชืขื‘ื•ืจ ืžื™ื“ ืœืงื•ื“ ื ื•ืกืฃ, ื•ืชื•ืฆืืช ื”ืฉืื™ืœืชื” ืชืขื•ื‘ื“ ืขื ื”ื’ืขืช ื”ื ืชื•ื ื™ื. .

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”