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

Inilabas ang Node.js 18.0, isang platform para sa pagpapatakbo ng mga network application sa JavaScript. Ang Node.js 18.0 ay inuri bilang isang pangmatagalang sangay ng suporta, ngunit ang status na ito ay itatalaga lamang sa Oktubre, pagkatapos ng pag-stabilize. Susuportahan ang Node.js 18.x hanggang Abril 2025. Ang pagpapanatili ng nakaraang LTS branch ng Node.js 16.x ay tatagal hanggang Abril 2024, at ang taon bago ang huling LTS branch 14.x hanggang Abril 2023. Ihihinto ang 12.x LTS branch sa Abril 30, at ang Node.js 17.x staging branch ay ihihinto sa Hunyo 1.

Mga pangunahing pagpapabuti:

  • Ang V8 engine ay na-update sa bersyon 10.1, na ginamit sa Chromium 101. Kung ikukumpara sa 17.9.0 release ng Node.js, mayroon na ngayong suporta para sa mga feature gaya ng findLast at findLastIndex na mga paraan para sa paghahanap ng mga elemento na nauugnay sa dulo ng isang array , at ang Intl.supportedValuesOf function. Pinahusay na Intl.Locale API. Ang pagsisimula ng mga field ng klase at pribadong pamamaraan ay pinabilis.
  • Ang experimental fetch() API ay pinagana bilang default, na idinisenyo para sa paglo-load ng mga mapagkukunan sa network. Ang pagpapatupad ay batay sa code mula sa HTTP/1.1 undici client at mas malapit hangga't maaari sa katulad na API na ibinigay sa mga browser. Kabilang dito ang suporta para sa mga interface ng FormData, Mga Header, Kahilingan at Tugon para sa pagmamanipula ng HTTP na kahilingan at mga header ng tugon. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = naghihintay res.json(); console.log(data); }
  • Ang isang pang-eksperimentong pagpapatupad ng Web Streams API ay idinagdag, na nagbibigay ng access sa mga stream ng data na natanggap sa network. Ginagawang posible ng API na magdagdag ng sarili mong mga tagapangasiwa upang gumana sa data habang dumarating ang impormasyon sa network, nang hindi naghihintay na ma-download ang buong file. Ang mga bagay na available na ngayon sa Node.js ay kinabibilangan ng ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream, at DecompressionStream.
  • Ang Blob API ay inilipat sa stable, na nagbibigay-daan sa iyong i-encapsulate ang hindi nababagong raw data para sa ligtas na paggamit sa iba't ibang thread ng manggagawa.
  • Ginawang stable ang BroadcastChannel API, na nagbibigay-daan sa iyong ayusin ang pagpapalitan ng mga mensahe sa asynchronous mode sa "isang nagpadala - maraming tatanggap" na format.
  • Nagdagdag ng experimental module node:test para sa paggawa at pagpapatakbo ng mga pagsubok sa JavaScript na nagbabalik ng mga resulta sa TAP (Test Anything Protocol) na format.
  • Ang henerasyon ng mga handa na asembleya para sa Red Hat Enterprise Linux (RHEL) 8 at iba pang mga distribusyon batay sa Glibc 2.28+, kasama ang Debian 10 at Ubuntu 20.04, pati na rin para sa macOS 10.15+ ay ibinigay. Dahil sa mga problema sa V8 engine build, pansamantalang itinigil ang paglikha ng 32-bit build para sa Windows.
  • Nagbigay ng pang-eksperimentong opsyon para bumuo ng isang Node.js na maipapatupad na may mga bahaging pinili ng user na sinimulan sa pagsisimula. Upang tukuyin ang mga panimulang bahagi, ang opsyong β€œ--node-snapshot-main” ay idinagdag sa script ng pag-configure ng build, halimbawa, β€œ./configure β€”node-snapshot-main=marked.js; node ng pangalan"

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