Paglabas ng JavaScript Node.js 13.0 sa gilid ng server

Magagamit pakawalan Node.js 13.0, mga platform para sa pagpapatakbo ng mga aplikasyon ng network sa JavaScript. Kasabay nito, ang pagpapapanatag ng nakaraang sangay ng Node.js 12.x ay nakumpleto na, na inilipat sa kategorya ng mga pangmatagalang paglabas ng suporta, ang mga update na kung saan ay inilabas sa loob ng 4 na taon. Ang suporta para sa nakaraang LTS branch ng Node.js 10.0 ay tatagal hanggang Abril 2021, at suporta para sa huling LTS branch 8.0 hanggang Enero 2020.

Ang pangunahing mga pagpapabuti:

  • Ang V8 engine ay na-update sa bersyon 7.8, na gumagamit ng mga bagong diskarte sa pag-optimize ng pagganap, pinapabuti ang pagkasira ng bagay, binabawasan ang pagkonsumo ng memorya, at binabawasan ang oras ng paghahanda para sa pagpapatupad ng WebAssembly;
  • Ang buong suporta para sa internasyonalisasyon at Unicode na nakabatay sa library ay pinagana bilang default ICU (International Components para sa Unicode), na nagpapahintulot sa mga developer na magsulat ng code sumusuporta gumana sa iba't ibang wika at lokal. Naka-install na ngayon ang full-icu module bilang default;
  • Na-stabilize ang API Mga Thread ng Manggagawa, nagpapahintulot lumikha ng mga multi-threaded na mga loop ng kaganapan. Ang pagpapatupad ay batay sa worker_threads module, na nagbibigay-daan sa iyong patakbuhin ang JavaScript code sa maraming magkakatulad na mga thread. Ang matatag na suporta para sa Workers Threads API ay nai-backport din sa LTS branch ng Node.js 12.x;
  • Ang mga kinakailangan para sa mga platform ay nadagdagan. Upang magtipon ngayon kinakailangan hindi bababa sa macOS 10.11 (nangangailangan ng Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Pinahusay na suporta para sa Python 3. Kung ang system ay may parehong Python 2 at Python 3, ginagamit pa rin ang Python 2, ngunit ang kakayahang bumuo kapag Python 3 lamang ang naka-install sa system ay naidagdag;
  • Ang lumang pagpapatupad ng HTTP parser (β€œβ€”http-parser=legacy”) ay inalis na. Inalis o hindi na ginagamit ang mga tawag at pag-aari FSWatcher.prototype.start(), ChildProcess._channel, open() na paraan sa ReadStream at WriteStream object, request.connection, response.connection, module.createRequireFromPath();
  • Sumusunod lumabas i-update ang 13.0.1, na mabilis na nag-ayos ng ilang mga bug. Sa partikular, ang problema sa npm 6.12.0 na nagpapakita ng babala tungkol sa paggamit ng hindi sinusuportahang bersyon ay nalutas na.

Alalahanin natin na ang Node.js platform ay maaaring gamitin kapwa para sa server-side na suporta ng mga Web application at para sa paglikha ng mga ordinaryong client at server network programs. Upang palawakin ang functionality ng mga application para sa Node.js, isang malaking bilang ng koleksyon ng mga module, kung saan makakahanap ka ng mga module na may pagpapatupad ng mga server at kliyente HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mga module para sa pagsasama sa iba't ibang web frameworks, WebSocket at Ajax handler, connectors sa DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), template engine, CSS engine, pagpapatupad ng cryptographic algorithm at authorization system (OAuth), XML parsers.

Upang mahawakan ang malaking bilang ng mga parallel na kahilingan, gumagamit ang Node.js ng isang modelo ng asynchronous na code execution batay sa hindi naka-block na pagpoproseso ng kaganapan at pagtukoy sa mga handler ng callback. Kasama sa mga sinusuportahang paraan para sa multiplexing na koneksyon ang epoll, kqueue, /dev/poll, at piliin. Ang library ay ginagamit sa multiplex na koneksyon libuv, na isang superstructure na tapos na libev sa mga Unix system at higit sa IOCP sa Windows. Ang isang library ay ginagamit upang lumikha ng isang thread pool libeio, para sa pagsasagawa ng mga query sa DNS sa non-blocking mode ay isinama c-ares. Ang lahat ng mga tawag sa system na nagdudulot ng pagharang ay isinasagawa sa loob ng thread pool at pagkatapos, tulad ng mga humahawak ng signal, ipapasa muli ang resulta ng kanilang trabaho sa isang hindi pinangalanang pipe. Ang pagpapatupad ng JavaScript code ay sinisiguro sa pamamagitan ng paggamit ng isang engine na binuo ng Google V8 (Sa karagdagan, ang Microsoft ay gumagawa ng isang bersyon ng Node.js gamit ang Chakra-Core engine).

Sa kaibuturan nito, ang Node.js ay katulad ng mga frameworks Perl AnyEvent, Ruby Event Machine, Sawa Twisted ΠΈ pagpapatupad mga kaganapan sa Tcl, ngunit ang loop ng kaganapan sa Node.js ay nakatago mula sa developer at kahawig ng pangangasiwa ng kaganapan sa isang web application na tumatakbo sa isang browser. Kapag nagsusulat ng mga application para sa node.js, kinakailangang isaalang-alang ang mga detalye ng programming na hinimok ng kaganapan, halimbawa, sa halip na gawin ang "var result = db.query("select..");" sa paghihintay para sa pagkumpleto ng trabaho at kasunod na pagproseso ng mga resulta, ginagamit ng Node.js ang prinsipyo ng asynchronous execution, i.e. ang code ay binago sa "db.query("select..", function (result) {result processing});", kung saan ang kontrol ay agad na mapapasa sa karagdagang code, at ang resulta ng query ay ipoproseso pagdating ng data. .

Pinagmulan: opennet.ru

Magdagdag ng komento