Available ang server-side na JavaScript platform na Node.js 19.0

Ang Node.js 19.0, isang platform para sa pagpapatakbo ng mga network application sa JavaScript, ay inilabas. Ang Node.js 19 ay isang regular na sangay ng suporta na may mga update na available hanggang Hunyo 2023. Sa mga darating na araw, makukumpleto ang stabilization ng Node.js 18 branch, na tatanggap ng LTS status at susuportahan hanggang Abril 2025. Ang pagpapanatili ng nakaraang LTS branch ng Node.js 16.0 ay tatagal hanggang Setyembre 2023, at ang taon bago ang huling LTS branch 14.0 hanggang Abril 2023.

Mga pangunahing pagpapabuti:

  • Ang V8 engine ay na-update sa bersyon 10.7, na ginamit sa Chromium 107. Kabilang sa mga pagbabago sa engine kumpara sa Node.js 18 branch, ang pagpapatupad ng ikatlong bersyon ng Intl.NumberFormat API ay nabanggit, na nagdaragdag ng mga bagong function na formatRange (), formatRangeToParts() at selectRange(), pagpapangkat ng mga set, mga bagong opsyon para sa pag-round at pagtatakda ng katumpakan, ang kakayahang bigyang-kahulugan ang mga string bilang mga decimal na numero. Ang mga kasamang dependencies llhttp 8.1.0 at npm 8.19.2 ay na-update din.
  • Ang isang pang-eksperimentong "node -watch" na utos ay iminungkahi sa pagpapatupad ng isang watch mode na nagsisiguro na ang proseso ay magsisimula muli kapag ang na-import na file ay nagbago (halimbawa, kung ang "node -watch index.js" ay naisakatuparan, ang proseso ay gagawin awtomatikong magre-restart kapag nagbago ang index.js).
  • Para sa lahat ng papalabas na koneksyon sa HTTP/HTTPS, pinagana ang suporta para sa mekanismo ng HTTP 1.1 Keep-Alive, na nag-iiwan sa koneksyon na bukas para sa isang tiyak na oras upang maproseso ang ilang kahilingan sa HTTP sa loob ng parehong koneksyon. Inaasahang mapapabuti ng Keep-Alive ang throughput at performance. Bilang default, nakatakda ang timeout ng bukas na koneksyon sa 5 segundo. Ang suporta para sa pag-parse ng Keep-Alive HTTP header sa mga tugon ng server ay idinagdag sa pagpapatupad ng HTTP client, at ang awtomatikong pagdiskonekta ng mga hindi aktibong kliyente gamit ang Keep-Alive ay idinagdag sa pagpapatupad ng Node.js HTTP server.
  • Ang WebCrypto API ay inilipat sa stable na kategorya, maliban sa mga function gamit ang Ed25519, Ed448, X25519 at X448 algorithm. Upang ma-access ang WebCrypto module maaari mo na ngayong gamitin ang globalThis.crypto o nangangailangan('node:crypto').webcrypto.
  • Ang suporta para sa mga tool sa pagsubaybay sa DTrace, SystemTap at ETW (Event Tracing para sa Windows) ay inalis, ang pagpapanatili nito ay itinuring na hindi naaangkop dahil sa pagiging kumplikado ng pagpapanatili nito na napapanahon sa kawalan ng wastong plano ng suporta.

Ang platform ng Node.js ay maaaring gamitin kapwa para sa pagpapanatili ng server ng mga Web application at para sa paglikha ng mga regular na programa ng network ng kliyente at server. Upang mapalawak ang pag-andar ng mga application para sa Node.js, isang malaking koleksyon ng mga module ang inihanda, kung saan makakahanap ka ng mga module na may pagpapatupad ng HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 server at mga kliyente, mga module para sa pagsasama na may iba't ibang web frameworks, WebSocket at Ajax handler , DBMS connectors (MySQL, PostgreSQL, SQLite, MongoDB), templating engine, CSS engine, pagpapatupad ng crypto algorithm at authorization system (OAuth), XML parsers.

Upang matiyak ang pagpoproseso ng malaking bilang ng mga parallel na kahilingan, ang Node.js ay gumagamit ng isang asynchronous na code execution model batay sa hindi naka-block na pangangasiwa ng kaganapan at ang kahulugan ng mga callback handler. Ang mga sinusuportahang paraan para sa multiplexing na koneksyon ay epoll, kqueue, /dev/poll, at piliin. Para sa multiplexing ng koneksyon, ginagamit ang libuv library, na isang add-on para sa libev sa mga Unix system at IOCP sa Windows. Ginagamit ang libeio library para gumawa ng thread pool, at isinama ang c-ares para magsagawa ng mga DNS query sa non-blocking mode. Ang lahat ng system call na nagdudulot ng pagharang ay isinasagawa sa loob ng thread pool at pagkatapos, tulad ng mga tagapangasiwa ng signal, ilipat ang resulta ng kanilang trabaho pabalik sa pamamagitan ng isang hindi pinangalanang pipe (pipe). Ang execution ng JavaScript code ay ibinibigay sa pamamagitan ng paggamit ng V8 engine na binuo ng Google (bilang karagdagan, ang Microsoft ay bumubuo ng isang bersyon ng Node.js gamit ang Chakra-Core engine).

Sa kaibuturan nito, ang Node.js ay katulad ng Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, at pagpapatupad ng Tcl event, ngunit ang event loop sa Node.js ay nakatago mula sa developer at kahawig ng event handling sa isang web application na tumatakbo. sa browser. Kapag nagsusulat ng mga application para sa node.js, kailangan mong 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